题意:
SDUQD 旁边的滨海公园有 x 条长凳。第 i 个长凳上坐着 a_i 个人。这时候又有 y 个人将来到公园,他们将选择坐在某些公园中的长凳上,那么当这 y 个人坐下后,记k = 所有椅子上的人数的最大值,那么k可能的最大值mx和最小值mn分别是多少。
思路:
在输入的时候找出人数最多的椅子上的人数maxn。要想让所有人坐下之后,人数最多的椅子上人最少,则让来的人坐下后尽量使每个椅子上人数相同。最多的情况则是让来到的人坐在本就人数最多的椅子上。
代码:
#include<iostream>
using namespace std;
int main()
{
int a[105];
int x, y;
cin >> x;
cin >> y;
cin >> a[1];
int maxn = a[1];
for (int i = 2; i <= x; i++)
{
cin >> a[i];
if (maxn < a[i])
maxn = a[i];
}
int sum = 0;
for (int i = 1; i <= x; i++)
sum += maxn - a[i];
int mn, mx;
int b;
if ((y - sum) % x)
b = (y - sum) / x + 1;
else
b = (y - sum) / x;
mn = (y <= sum) ? maxn : maxn + b;
mx = maxn + y;
cout << mn << " " << mx;
}