0
点赞
收藏
分享

微信扫一扫

UVA - 11300 Spreading the Wealth 公式+中位数


#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define maxn 1000010
long long A[maxn], tmp[maxn];

int main() {
	int n;
	while(scanf("%d",&n) == 1) {
		
		long long sum = 0;
		for(int i = 0; i < n; i++) {
			scanf("%lld",&A[i]);	
			sum += A[i];
		}
		long long average = sum / n;

		tmp[0] = 0;
		for(int i = 1; i < n; i++)
			tmp[i] = tmp[i-1] + A[i] - average;

		sort(tmp,tmp+n);
		long long t = tmp[n/2];
		long long ans = 0;

		for(int i = 0; i < n; i++)
			ans += fabs(t - tmp[i]);
		printf("%lld\n",ans);
	}
	return 0;
}

举报

相关推荐

0 条评论