学生分组
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
有 组学生,给出初始时每组中的学生个数,再给出每组学生人数的上界 和下界 ,每次你可以在某组中选出一个学生把他安排到另外一组中,问最少要多少次才可以让 组学生的人数都在 中。
下面是初始化代码,其中需要添加代码的地方已经使用注释标出。
#include <algorithm>
#include <cstdio>
#include <iostream>
using namespace std;
int a[55];
int main() {
freopen("group.in", "r", stdin);
freopen("group.out", "w", stdout);
int n, sum = 0;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
sum += a[i];
}
int L, R;
cin >> L >> R;
if (/*这里需要添加合适的代码*/) {
int ans1 = 0, ans2 = 0;
for (int i = 0; i < n; i++) {
// 这里需要添加合适的代码
}
cout <</*这里需要添加合适的代码*/<< endl;
} else {
cout << -1 << endl;
}
return 0;
}
输入格式
第一行一个整数 ,表示学生组数;
第二行 个整数,表示每组的学生个数 ;
第三行两个整数 ,表示下界和上界。
。
输出格式
一个整数,表示最少的交换次数,如果不能满足题目条件输出 。
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为 group.in
,输出文件为 group.out
样例输入
3
1 5 10
4 7
样例输出
3