【题解-Acwing】2048. 干草

题目:2048. 干草

题目描述

奶牛们又来捣乱了!

农夫约翰精心整理的 N 堆干草,每堆干草的高度相同。

但是,奶牛们趁着他不注意在干草堆之间移动了一些干草捆,使得各个干草堆的高度可能不再相同了。

给定所有干草堆的新高度,请帮助约翰确定,为了使所有干草堆恢复到原来的相同高度,至少要移动的最小干草捆数。

输入

第一行包含整数 N。

接下来 N 行,每行包含一个整数(范围 1,10000),表示每个干草堆的现有干草捆数量(也就是新高度)。

输出

输出需要移动的最小干草捆数。

数据范围

1≤N≤10000

时空范围

1s / 64MB

输入样例

复制代码
4
2
10
7
1

输出样例

复制代码
7

样例解释

至少要移动 7 个干草捆(将 3 个干草捆从第 2 堆移动至第 1 堆,将 2 个干草捆从第 2 堆移动至第 4 堆,将 2 个干草捆从第 3 堆移动至第 4 堆)。

代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=10000+10;
int n,a[N],avg,res;
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
        avg+=a[i];
    }
    avg/=n;
    for(int i=0;i<n;i++){
        if(a[i]>avg){
            res+=a[i]-avg;
        }
    }
    cout<<res;
    return 0;
}

结果