#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int a[55];
int sum = 0;
for (int i = 1;i <= n;i++){
cin >> a[i];
sum = sum + a[i];
}
int left,right;
cin >> left >> right;
if (sum > right*n || sum < left*n){
cout << "-1";
return 0;
}
int time = 0;
int more = 0;
int less = 0;
for (int i = 1;i <= n;i++){
if (a[i] > right){
more += a[i] - right;
}
else if (a[i] < left){
less += left - a[i];
}
}
cout << max (more,less);
return 0;
}
学生分组
题目描述
有 nnn 组学生,给出初始时每组中的学生个数,再给出每组学生人数的上界 RRR 和下界 L (L≤R)L\ (L \le R)L (L≤R),每次你可以在某组中选出一个学生把他安排到另外一组中,问最少要多少次才可以使 NNN 组学生的人数都在 [L,R][L,R][L,R] 中。
输入格式
第一行一个整数 nnn,表示学生组数;
第二行 nnn 个整数,表示每组的学生个数;
第三行两个整数 L,RL,RL,R,表示下界和上界。
输出格式
一个数,表示最少的交换次数,如果不能满足题目条件输出 −1-1−1。
样例 #1
样例输入 #1
2
10 20
10 15
样例输出 #1
5
提示
数据范围及约定
对于全部数据,保证 1≤n≤501\le n \le 501≤n≤50。