C++ 雪人部落储备粮分配问题 - 算法实现
#include
int a[100005];
int main() { int n; cin>>n; long long sum=0; for(int i=0;i<n;i++) { cin>>a[i]; sum+=a[i]; } sort(a,a+n); int average=sum/n; int left=sum%n; int i=n-1; int ans=0; while(left) { int d=a[i]-average; if(d<left) { left-=d; ans+=d*(d+1)/2; } else { ans+=left*(a[i]-average-left+1); left=0; } i--; } if(left==0) { while(i>=0) { ans+=average-a[i]; i--; } } cout<<ans<<endl; return 0; }
原文地址: https://www.cveoy.top/t/topic/oiX1 著作权归作者所有。请勿转载和采集!