为啥错了
查看原帖
为啥错了
349798
BensonQAQ666楼主2021/8/22 13:17
#include<iostream>
using namespace std;
long long N,M,a[1000001],l,r,mid;
int check(long long t)
{
	long long i,s;
	for(i=1;i<=N;i++)
		if(a[i]>t)
			s+=(a[i]-t);
	if(s>=M)
		return 1;
	else
		return 0;
}
int main()
{
	long long i;
	cin>>N>>M;
	r=-1;
	l=1;
	for(i=1;i<=N;i++)
	{
		cin>>a[i];
		r=max(r,a[i]);//求最大数做右边界 
	}
	while(l<=r)
	{
		mid=(l+r)/2;
		if(check(mid)==1)
			l=mid+1;
		else
			r=mid-1;
	}
	//return 0;
	cout<<l-1;
	return 0;
}
2021/8/22 13:17
加载中...