P1109 学生分组
题解:因为只需要计算移动次数,那么计算出每组人数与要求的人数差多少即可。
代码
#include<bits/stdc++.h>
using namespace std;
int n,L,R,a[52];
void solve()
{
int ret = 0, ter = 0;
for(int i = n-1 ; i >= 0; --i){
if(a[i] > R)
ret += a[i] - R;
else if(a[i] < L)
ter += L - a[i];
}
if(ter > ret)
ret += ter - ret;
printf("%d\n",ret);
}
int main()
{
#ifndef ONLINE_JUDGE
// freopen("input.in","r",stdin);
#endif
cin>>n;
int sum = 0;
for(int i = 0; i < n; ++i)
cin>>a[i];
for(int i = 0; i < n; ++i)
sum += a[i];
cin>>L>>R;
double ret = 1.0*sum/n;
if(ret < L || ret > R){
puts("-1");
return 0;
}
solve();
return 0;
}