502 二分答案
// 502 二分答案.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
http://oj.daimayuan.top/course/22/problem/61
给一个序列 a1,a2,…,an。
你可以对这个序列进行操作,每次操作可以选择一个元素,把它加 1
,经过不超过 k次操作之后,希望序列里面的最小值最大。问这个值是多少。
输入格式
第一行两个整数 n,k
。接下来一行 n个整数,表示 a1,a2,…,an。
输出格式
输出一行,一个整数,表示答案。
样例输入1
5 10
1 4 2 6 8
样例输出1
5
样例输入2
1 10000000000000
100000000
样例输出2
10000100000000
数据规模
对于 100%的数据,满足 1≤n≤105,1≤ai≤108,0≤k≤1013
*/
#include <iostream>
using namespace std;
const int N = 100010;
long long a[N];
long long n, k;
bool check(long long mid) {
long long cnt = 0;
for (int i = 0; i < n; i++) {
if(a[i]<=mid)
cnt += mid - a[i];
}
return cnt <= k;
}
int main()
{
cin >> n >> k;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
long long l = 0; long long r = 10000100000010;
while (l < r) {
long long mid = (l + r + 1) >> 1;
if (check(mid)) l = mid;
else r = mid - 1;
}
cout << l << endl;
return 0;
}
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2021-12-02 papamelon 260. 最大化平均值(挑战程序设计竞赛) 二分
2021-12-02 papamelon 257. 下界 lower_bound(挑战程序设计竞赛)
2021-12-02 papmelon 327. 木棒 Wooden Sticks(挑战程序设计竞赛) dp
2021-12-02 papamelon 328. 电路板 Bridging signals(挑战程序设计竞赛)
2020-12-02 LeetCode 048. 旋转图像
2020-12-02 LeetCode 040. 组合总和 II 非SET去重