CodeForce--Benches
There are nn benches in the Berland Central park. It is known that aiai people are currently sitting on the ii-th bench. Another mm people are coming to the park and each of them is going to have a seat on some bench out of nn available.
Let kk be the maximum number of people sitting on one bench after additional mm people came to the park. Calculate the minimum possible kk and the maximum possible kk.
Nobody leaves the taken seat during the whole process.
The first line contains a single integer nn (1≤n≤100)(1≤n≤100) — the number of benches in the park.
The second line contains a single integer mm (1≤m≤10000)(1≤m≤10000) — the number of people additionally coming to the park.
Each of the next nn lines contains a single integer aiai (1≤ai≤100)(1≤ai≤100) — the initial number of people on the ii-th bench.
Print the minimum possible kk and the maximum possible kk, where kk is the maximum number of people sitting on one bench after additional mm people came to the park.
4
6
1
1
1
1
3 7
1
10
5
15 15
3
6
1
6
5
6 12
3
7
1
6
5
7 13
In the first example, each of four benches is occupied by a single person. The minimum kk is 33. For example, it is possible to achieve if two newcomers occupy the first bench, one occupies the second bench, one occupies the third bench, and two remaining — the fourth bench. The maximum kk is 77. That requires all six new people to occupy the same bench.
The second example has its minimum kk equal to 1515 and maximum kk equal to 1515, as there is just a single bench in the park and all 1010people will occupy it.
题目大意:公园里有n个座位,一开始每个座位都有多少人(人数给出),公园里将进来m人,问这些人往座位上坐,那么座位上人数最多的那个能有多少人,最多人数最小化能有多少人?
自己还是太菜了啊,看了一下大佬的题解,发现思维真的太强了
最多能有多少肯定好计算,把数组排序加上将要进来的人数就是,也就是代码中的kmax,问题是如何求得最小化的最大值呢?
大佬还是先排序,排好序了,让数组下标从0开始,依次与数组最大值比较(这个比较好理解,因为要是不超过的话肯定数组最大值就是最大啊),
然后,如果第i个元素和最大值相等,那么这个元素自增,并且m要自减,下面再来一个循环,只要这个元素比最大值小,那么这个元素就进行自增,m进行自减
知道m为0或者这个元素不小于最大值了,如果这轮i==n了但是m还没有为0,那么此时就要重新将i赋值为0
结束这层循环以后,要在外层循环中再次对数组进行排序,这个目的是为了更新最大值,最后输出就ok了
#include<iostream>
#include<algorithm>
using namespace std;
int arr[];
int n,m;
int kmax;
void solve()
{
int i=;
sort(arr,arr+n);
kmax=arr[n-]+m;
while(m!=)
{
if(arr[i]==arr[n-]&&m!=)
{
arr[i]++;
m--;
}
while(arr[i]<arr[n-]&&m!=)
{
arr[i]++;
m--;
}
i++;
if(i==n)
i=;
}
i=;
sort(arr,arr+n);//更新最大值
}
int main()
{
while(cin>>n>>m)
{
for(int i=;i<n;i++)
cin>>arr[i];
solve();
cout<<arr[n-]<<" "<<kmax<<endl;
}
return ;
}
CodeForce--Benches的更多相关文章
- Codeforce - Street Lamps
Bahosain is walking in a street of N blocks. Each block is either empty or has one lamp. If there is ...
- Codeforce Round #216 Div2
e,还是写一下这次的codeforce吧...庆祝这个月的开始,看自己有能,b到什么样! cf的第二题,脑抽的交了错两次后过了pretest然后system的挂了..脑子里还有自己要挂的感觉,果然回头 ...
- Codeforce 水题报告(2)
又水了一发Codeforce ,这次继续发发题解顺便给自己PKUSC攒攒人品吧 CodeForces 438C:The Child and Polygon: 描述:给出一个多边形,求三角剖分的方案数( ...
- codeforce 375_2_b_c
codeforce 375_2 标签: 水题 好久没有打代码,竟然一场比赛两次卡在边界条件上....跪 b.题意很简单...纯模拟就可以了,开始忘记了当字符串结束的时候也要更新两个值,所以就错了 #i ...
- codeforce 367dev2_c dp
codeforce 367dev2_c dp 标签: dp 题意: 你可以通过反转任意字符串,使得所给的所有字符串排列顺序为字典序,每次反转都有一定的代价,问你最小的代价 题解:水水的dp...仔细想 ...
- 三维dp&codeforce 369_2_C
三维dp&codeforce 369_2_C 标签: dp codeforce 369_2_C 题意: 一排树,初始的时候有的有颜色,有的没有颜色,现在给没有颜色的树染色,给出n课树,用m种燃 ...
- 强连通分量&hdu_1269&Codeforce 369D
强连通分量 标签: 图论 算法介绍 还记得割点割边算法吗.回顾一下,tarjan算法,dfs过程中记录当前点的时间戳,并通过它的子节点的low值更新它的low,low值是这个点不通过它的父亲节点最远可 ...
- 【树状数组】区间出现偶数次数的异或和(区间不同数的异或和)@ codeforce 703 D
[树状数组]区间出现偶数次数的异或和(区间不同数的异或和)@ codeforce 703 D PROBLEM 题目描述 初始给定n个卡片拍成一排,其中第i个卡片上的数为x[i]. 有q个询问,每次询问 ...
- 解题报告:codeforce 7C Line
codeforce 7C C. Line time limit per test1 second memory limit per test256 megabytes A line on the pl ...
- UVA 11578 - Situp Benches(dp)
题目链接:11578 - Situp Benches 题意:健♂身♂房有两个仰卧起坐坐垫,每次调整角度要花费10元/10度,每次使用要花费15,如今给定n个人的时间顺序,和所希望的角度,求最少花费 思 ...
随机推荐
- 讲明白combineByKey()算子,不是谈源码
简单介绍 combineByKey()是最通用的对key-value型rdd进行聚集操作的聚集函数(aggregation function).类似于aggregate(),combineByKey( ...
- springmvc httprequest 使用@Autowired注解
springmvc httprequest 使用@Autowired注解我一直有个疑问,就是注解后每次的httprequest 是不是都一样的了,然后会不会引发多线程问题? 代码如下: import ...
- GreenDao 数据库升级 连接多个DB文件 或者指定不同的model&dao目录
相信很多人都用过greenDao 今天 我抽空总结下使用的时候一些小东西吧 废话不多说 下边就GreenDao 的使用遇到的问题以及解决方案记录一下吧. 1.greendao 指定不同的生成目录: S ...
- android 跨进程通讯 AIDL
跨进程如何通讯?两个进程无法直接通讯,通过Android系统底层间接通讯.基于service的aidl实现跨进程通讯. 什么叫AIDL? Android interface definition la ...
- [Java]获取byte数组的实际使用长度
背景:byte.length只能获取到初始化的byte数组长度,而不是实际使用的长度,因此想要获取到实际的使用长度只能靠其他方法实现. 方法一: public class ByteActualLeng ...
- wireshark使用教程及TCP三次握手实例
安装后,选择对应访问网络的网卡,即可看到下面的主界面 具体说下封包详细信息 (Packet Details Pane) 这个面板是我们最重要的,用来查看协议中的每一个字段. 各行信息分别为 Frame ...
- Beginning Python Chapter 2 Notes
Python基本数据类型用Python官方说法应该叫Python内建数据类型,英文叫built-in type.下面稍微总结了一下我看到过的Python内建数据类型. Python基本数据类型 数据类 ...
- 地址栏传值 JS取值方法
function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...
- Cocos2d-x数据相关的类用法简介(附示例)
(搬运自我在SegmentFault的博客) 在Cocos2d-x的学习和使用中,我遇到了很多关于数据的操作.在这个过程中,我学习了Cocos2d-x自带的很多功能.下面我把接触到的类罗列在下面,给出 ...
- [dp][uestc]L - 菲波拉契数制升级版
数据很大,以背包的思路数组开不下. 先定序地考虑一个菲波拉契数如fib(i)的表示法,假设i比较大,由菲波拉契数的定义可知道fib(i)=fib(i-1)+fib(i-2);要找到其它表示就继续拆分f ...