首页 > 编程知识 正文

Codeforces Round #510 (Div. 2) A. Benches

时间:2023-05-06 07:15:06 阅读:232730 作者:7

题目描述:给出n个a[i],表示目前每个长椅上坐着的人数,又给出m个人,要安排他们坐在n个长椅上,记录坐着人最多的长椅上的人数k,求最大的k和最小的k
题目链接:http://codeforces.com/contest/1042/problem/A
思路:先选出最大的a[i]—maxa,最大k很好求,就是maxa+m,而最小k呢?用maxa去减每一个数求和出suma,如果m<suma,最小值就是maxa,如果m>suma,就在这个基础上加上[(m-suma)/n]向上取整。
c++代码:

#include <iostream>#include <cmath>using namespace std;int a[55];int main() {int n,m;cin >> n;cin >> m;int maxt=0;for(int i=0;i<n;i++) { int t; cin >> t; a[i]=t; maxt=max(t,maxt);}//cout << mint <<endl;//int ans1=max(mint+(m%n==0?m/n:m/n+1),maxt+m/n) ;int sum=0;for(int i=0;i<n;i++) {sum+=maxt-a[i];}int ans1;if(m<=sum)ans1=maxt;else ans1=maxt+((m-sum)%n==0?(m-sum)/n:(m-sum)/n+1);int ans2=maxt+=m;cout << ans1 <<" " << ans2 << endl;return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。