先算出目标状态,然后拿当前状态与目标状态对比,即可算出答案
#include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; const int maxn=100000+10; int a[maxn]; int b[maxn]; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+1+n); int sum=0; for(int i=1;i<=n;i++) sum=sum+a[i]; int ave=sum/n; for(int i=1;i<=n;i++) b[i]=ave; int MOD=sum%n; for(int i=n;i>=n-MOD+1;i--) b[i]++; // for(int i=1;i<=n;i++) printf("%d ",b[i]); int ans=0; for(int i=1;i<=n;i++) ans=ans+max(0,a[i]-b[i]); printf("%d ",ans); return 0; }