【Week9作业-C】签到题

算法

模拟

题目描述

SDUQD 旁边的滨海公园有 x 条长凳。第 i 个长凳上坐着 a_i 个人。这时候又有 y 个人将来到公园,他们将选择坐在某些公园中的长凳上,那么当这 y 个人坐下后,记k = 所有椅子上的人数的最大值,那么k可能的最大值mx和最小值mn分别是多少。

解题思路

k可能的最大值即所有人都坐在原来人最多的凳子上,k可能的最小值即所有人依次优先坐在人最少的凳子上(即所有人平摊开)之后人最多的凳子。

代码

#include<iostream>
using namespace std;
int main(){
    int sum=0,mx=-1;
    int x,y,a;
    cin>>x>>y;
    for(int i=1;i<=x;i++){
        cin>>a;
        sum+=a;
        mx=max(a,mx);
    }
    sum+=y;
    int mi=sum/x+(sum%x!=0);
    cout<<max(mi,mx)<<" "<<mx+y<<endl;
    return 0;
}

题目总结

尽管题目比较简单,但仍然需要注意,仔细读题。

题目原文

题面

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

输出 mn 和 mx

Input Example
3
7
1
6
1
Output Example
6 13
样例解释

最初三张椅子的人数分别为 1 6 1
接下来来了7个人。
可能出现的情况为{1 6 8},{1,7,7},…,{8,6,1}
相对应的k分别为8,7,…,8
其中,状态{1,13,1}的k = 13,为mx
状态{4,6,5}和状态{5,6,4}的k = 6,为mn

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容