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;
}

posted on   itdef  阅读(2)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源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去重

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示