题目:https://cn.vjudge.net/problem/UVA-11300
经过分析,转化为找中位数
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const int maxn=1000000+10;
ll A[maxn],C[maxn],tot,M;
int main(){
int n;
while(scanf("%d",&n)==1){
tot=0;
for(int i=1;i<=n;i++){
scanf("%lld",&A[i]);
tot+=A[i];
}
M=tot/n;
C[0]=0;
for(int i=1;i<n;i++)
C[i]=C[i-1]+A[i]-M;
sort(C,C+n);
ll x1=C[n/2],ans=0;
for(int i=0;i<n;i++)
ans+=fabs(x1-C[i]);
printf("%lld\n",ans);
}
return 0;
}