返回题解分享
讨论 / 题解分享/ 帖子详情

砍树 - 题解

普普通通二分题
我叫你开longlong你二龙嘛

#define _CRT_SECURE_NO_WARNINGS 1
/**
 * @brief 打开宏开关
 * */
#define _USE_MATH_DEFINES
#include <cmath>
#include <bits/stdc++.h>
using namespace std;
#define ll long long

const int N = 1e6 + 5;
ll n, m;
ll a[N];
bool bisearch(ll h)
{
	ll sum = 0;
	for (int i = 1; i <= n; i++)
	{
		if (a[i] > h) sum += a[i] - h;
	}
	return sum >= m;
}
int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	ll l = 1, r = 1e9;
	while (l + 1 < r)
	{
		ll m = l + r >> 1;
		if (bisearch(m)) l = m;
		else r = m;
	}
	if (bisearch(l)) cout << l;
	else cout << r;
	return 0;
}
0 回复 0 转发 0 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!