CodeForces 609C Load Balancing

先算出目标状态,然后拿当前状态与目标状态对比,即可算出答案

#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\n",ans);
    return 0;
}

 

posted @ 2015-12-25 11:18  Fighting_Heart  阅读(242)  评论(0编辑  收藏  举报