分班
时间限制:1秒 内存限制:256M
【问题描述】
学校有 \(N\) 个班,初始时每班的人数为 \(A_i\),然后给出一个上界 \(R\) 和下界 \(L(L≤R)\)。
每次你可以在某一班中选出一个学生把他安排到另一班中。
问最少要操作多少次才可以让 \(N\) 个班学生的人数大于等于 \(L\),且小于等于 \(R\)。
【输入格式】
第一行一个整数 \(N\),表示班级数目。
第二行有 \(N\) 个整数,第 \(i\) 个整数表示第i组的学生人数 \(A_i\)。
第三行两个整数 \(L\) 和 \(R(L≤R)\),表示下界和上界。
【输出格式】
一个整数,表示最少操作次数,如果无论操作多少次都不能满足题目的条件则输出-1。
【输入输出样例1】
Input
2
10 20
10 15
Output
5
【样例1解释】
从2班调5个人到1班,使得两个班的人数均为15。
【输入输出样例2】
Input
5
10 30 20 50 40
25 35
Output
20
【样例2解释】
从4班调15个人到1班,再从5班调5个人到3班,使得5个班人数分别为:25,30,25,35,35。
【数据限制】
\(100\%\) 的数据满足:\(1 ≤ N ≤ 10000000\),\(1 ≤ X_i,R,L ≤ 10^9\) 。
【来源】
Mr.he