实验任务
YellowStar 有\(n\)朵花,每朵花都有高度,表示为\(a_1,a_2,\cdots ,a_n\)。\(m\)天之后他要把\(n\)朵花作为礼物送给他心爱的小姐姐,不过这\(m\)天里可以通过浇花来让花长高。
由于每天只能浇一朵花,使得该朵花高度加 1。Yellowstar 希望自己送出去的\(n\)朵花中的最低高度值,尽可能大,请你帮帮他。
数据输入
输入的第一行为 2 个数字\(n,m\ (1\leq n\leq 10^5,1 \leq m \leq 10^9)\),表示有\(n\)朵花,\(m\)天。第二行包含\(n\)个整数,表示鲜花的高度\(a_1,a_2,\cdots,a_n\ (1\leq a_i\leq 10^9)\)。
数据输出
输出一个整数,表示答案。
输入示例 | 输出示例 |
---|---|
6 2 2 2 2 2 1 1 |
2 |
6 1 2 2 2 2 1 1 |
1 |
数据范围
\(80\%\)的得分点,\(m \leq 100000\); \(20\%\)的得分点,\(m \leq 10^9\)。
源代码
1 |
|
设计思路与复杂度分析
补短板就好了,但是实现的时候不要去一次一次的模拟,而是一次性将所有最矮的提升到次矮,否则就超时了。注意数据范围!
复杂度分析:排序\(O(n\times logn)\),数据处理\(O(n)\),整体时间复杂度\(O(n\times logn)\)。