为什么二分结果最后return l就全错,return r就全队呢
  • 板块题目总版
  • 楼主fxsnbfx
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/17 11:28
  • 上次更新2024/8/17 14:47:57
查看原帖
为什么二分结果最后return l就全错,return r就全队呢
1284636
fxsnbfx楼主2024/8/17 11:28
p1873
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+10;
ll n,m,a[N],ans;
ll find(ll l,ll r)
{
	while(l<=r)
	{
		ll num=0,mid=(l+r)/2;
		for(ll i=0;i<n;i++)
		if(a[i]>mid)
		num+=a[i]-mid;
		if(num<m)
		r=mid-1;
		else
		l=mid+1;
	}
	return r;
}
void solve()
{
	cin>>n>>m;
	for(ll i=0;i<n;i++)
	cin>>a[i];
	sort(a,a+n);
	ans=find(a[0],a[n-1]);
	cout<<ans;
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL) ,cout.tie(NULL);
	int T=1;
	while(T--)
	{
		solve();
	}
	return 0;
}
2024/8/17 11:28
加载中...