主要思路:
显然,无论什么情况下,最大人数 = 当前最大人数 + 到来的人数
对于最少人数,有两种情况:到来的人可以均匀地加入到当前非最多人数的座位中去,这样最大人数依然是当前最大人数;如果不能这样做到,也就是来的人太多了,那么就是总人数除以座位数(+1,视可否整除的情况而定)
C - 签到题
SDUQD 旁边的滨海公园有 x 条长凳。第 i 个长凳上坐着 a_i 个人。这时候又有 y 个人将来到公园,他们将选择坐在某些公园中的长凳上,那么当这 y 个人坐下后,记k = 所有椅子上的人数的最大值,那么k可能的最大值mx和最小值mn分别是多少。
Input
第一行包含一个整数 x (1 <= x <= 100) 表示公园中长椅的数目
第二行包含一个整数 y (1 <= y <= 1000) 表示有 y 个人来到公园
接下来 x 个整数 a_i (1<=a_i<=100),表示初始时公园长椅上坐着的人数
Output
输出mx、nx
Sample Input
3
7
1
6
1
Sample Output
6 13
A Possible Solution
#include<stdio.h>
int x,y,a[105];
int max=0,tot=0;
int main(){
scanf("%d %d",&x,&y);
for(int i=0;i<x;i++){
scanf("%d",a+i);
max=max>a[i]?max:a[i];
tot+=a[i];
}
if(max*x-tot >= y){
printf("%d %d\n",max,max+y);
}
else{
if((y+tot)%x){
printf("%d %d\n",(y+tot)/x+1,max+y);
}
else{
printf("%d %d\n",(y+tot)/x,max+y);
}
}
return 0;
}