70分求调!
查看原帖
70分求调!
654763
smallpeople楼主2024/6/2 15:01
#include<bits/stdc++.h>
using namespace std;

long long n, m, ans, maxn = -1;
long long a[1000005];

int solve(int l, int r)
{
	//cout<<l<<" "<<r<<'\n';
	if(l >= r)return l;
	
	int mid = (l + r + 1) / 2, res = 0;//mid此时会靠近r,即 r - mid <= mid - l
	for(int i = 1;i <= n;i ++)
		if(a[i] > mid)
			res += a[i] - mid;
	if(res >= m)return solve(mid, r);
	else return solve(l, mid - 1);
	
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	cin>>n>>m;
	for(int i = 1;i <= n;i ++)
	{
		cin>>a[i];
		maxn = max(maxn, a[i]);
	}
	
	ans = solve(1, maxn);
	
	cout<<ans;
	
	return 0;
}

qwq__

2024/6/2 15:01
加载中...