题意介绍
公园有 x 条长凳。第 i 个长凳上坐着 a_i 个人。这时候又有 y 个人将来到公园,他们将选择坐在某些公园中的长凳上,那么当这 y 个人坐下后,记k = 所有椅子上的人数的最大值,那么k可能的最大值mx和最小值mn分别是多少。
题意分析
k的最大值就是这y个人都坐在了原来人数最多的一条长凳上,k的最小值,就是将这y个人先分到原来人数不是最多的长凳上,分到所有长凳上的人数都和原来的最大值值相等为止,如果不能到达这种情况,原来的最大值就是现在的最小值,否则原来的基础上加一就是现在的最小值。
通过代码
#include<iostream>
#include<algorithm>
using namespace std;
int x, y, a[100],ans;
int main() {
cin >> x;
cin >> y;
for (int i = 0; i < x; i++) {
cin >> a[i];
ans += a[i];
}
sort(a, a + x);
ans += y;
int b = ans % x;
ans /= x;
ans += (b == 0) ? 0 : 1;
ans = max(ans, a[x - 1]);
cout << ans << " " << a[x - 1] + y << endl;
return 0;
}