您的位置:首页 > 其它

uva11300 Spreading the Wealth

2014-04-12 22:16 447 查看
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=456&page=show_problem&problem=2275

刘汝佳《算法竞赛入门经典训练指南 1.1例3

///2014.4.12
///uva11300
///刘汝佳《算法竞赛入门经典训练指南 1.1例3

#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
#include <algorithm>
#include <climits>
using namespace std;

#define maxn 1000100
int n;
long long A[maxn];

int main()
{
// freopen("in","r",stdin);
// freopen("out","w",stdout);
while( scanf("%d",&n)!=EOF ){
long long sum = 0;
for(int i=0 ; i<n ; i++){
scanf("%lld",A+i);
sum += A[i];
}
long long ave = sum / n;
for(int i=0 ; i<n ; i++){
A[i] -= ave;
}
for(int i=1 ; i<n ; i++){
A[i] += A[i-1];
}
sort(A,A+n);
long long mid = A[n/2];
sum = 0;
for(int i=0 ; i<n ; i++){
if( A[i]-mid > 0 )
sum += A[i]-mid;
else
sum += mid-A[i];
}
cout<<sum<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: