←轻点资瓷
哈哈哈!!氵题啊!太水了
两分钟就写完了
分析
一眼看上去,简单但不完全简单
我看了另外两个人的题解,好像都很费
其实只要把所有高度小于平均值的干草与平均值的差值加起来就行了
关键就这一句if(a[i]<x) s+=x-a[i]
代码仅供参考
#include<bits/stdc++.h>
using namespace std;
int a[1008611];
int main(){
int n,sum=0,s=0;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],sum+=a[i]; //统计所有干草的总数
int x=sum/n; //求出平均值,也就是原来每堆干草的数量
for(int i=1;i<=n;i++) if(a[i]<x) s+=x-a[i]; //由于要恢复到原来的高度,所以比平均值少的就要增加到平均值(此处可以不需要考虑从多的移到少的的过程,因为干草总数是不会变的)
cout<<s<<endl;
return 0;
}