uva11300 Spreading the Wealth
刘汝佳《算法竞赛入门经典训练指南 1.1例3
1 ///2014.4.12 2 ///uva11300 3 ///刘汝佳《算法竞赛入门经典训练指南 1.1例3 4 5 #include <iostream> 6 #include <cstdio> 7 #include <string> 8 #include <cmath> 9 #include <algorithm> 10 #include <climits> 11 using namespace std; 12 13 #define maxn 1000100 14 int n; 15 long long A[maxn]; 16 17 int main() 18 { 19 // freopen("in","r",stdin); 20 // freopen("out","w",stdout); 21 while( scanf("%d",&n)!=EOF ){ 22 long long sum = 0; 23 for(int i=0 ; i<n ; i++){ 24 scanf("%lld",A+i); 25 sum += A[i]; 26 } 27 long long ave = sum / n; 28 for(int i=0 ; i<n ; i++){ 29 A[i] -= ave; 30 } 31 for(int i=1 ; i<n ; i++){ 32 A[i] += A[i-1]; 33 } 34 sort(A,A+n); 35 long long mid = A[n/2]; 36 sum = 0; 37 for(int i=0 ; i<n ; i++){ 38 if( A[i]-mid > 0 ) 39 sum += A[i]-mid; 40 else 41 sum += mid-A[i]; 42 } 43 cout<<sum<<endl; 44 } 45 return 0; 46 }