C - 签到题

题意介绍

公园有 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;
}
发布了40 篇原创文章 · 获赞 0 · 访问量 1050

猜你喜欢

转载自blog.csdn.net/weixin_44934885/article/details/105669221