题目描述:
思路:
若总人数过大(超过l*n)或总人数过小(低于r*n),此时无法满足题中条件,输出-1;
若人数合适,因为最后人在那一组对结果没有影响,只和多了多少人和少了多少人有关,因此用b记录少的人数,用c记录多的人数,最终结果为二者的最大值
满分代码:
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int a[1000];
int main() {
cin >> n;
int sum = 0;
for (int i = 0; i < n; i++) {
cin >> a[i];
sum += a[i];
}
int l, r;
cin >> l >> r;
if (sum<l * n || sum>r * n) {
cout << -1;
return 0;
}
int b = 0;
int c = 0;
for (int i = 0; i < n; i++) {
if (a[i] < l) {
b += l - a[i];
}
if (a[i] > r) {
c += a[i] - r;
}
}
cout << max(b, c);
}