#178. 学生分组

学生分组

NN 组学生,给出初始时每组中的学生个数,再给出每组学生人数的上界 RR 和下界 L(LR)L(L≤R),每次你可以在某组中选出一个学生把他安排到另外一组中,问最少要多少次才可以让 NN 组学生的人数都在 [L,R][L,R] 中。

下面是初始化代码,其中需要添加代码的地方已经使用注释标出。

#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;
}

输入格式

第一行一个整数 N(1N50)N (1≤N≤50),表示学生组数;

第二行 NN 个整数,表示每组的学生个数 aia_i

第三行两个整数 L,RL,R,表示下界和上界。

1ai,L,R10001≤a_i,L,R≤1000

输出格式

一个整数,表示最少的交换次数,如果不能满足题目条件输出 1−1

输出时每行末尾的多余空格,不影响答案正确性

要求使用「文件输入输出」的方式解题,输入文件为 group.in,输出文件为 group.out

样例输入

3
1 5 10
4 7

样例输出

3