题解
查看原帖
题解
1394890
CCF___NOI楼主2024/7/16 16:25
#include<bits/stdc++.h>
using namespace std;
long long a[5000001],n,k,m,s,t,max1;
bool check(int mid)
{
	s=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i]>mid)
		{
			s+=(a[i]-mid);
		}
	}
	if(s>=m)
		return true;
	else
		return false;	
}
int main(){
	int l=0,r,mid;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		if(a[i]>=max1) 
			max1=a[i];
	}
	r=max1; 
	while(l!=r)
	{
		mid=(l+r+1)/2;
		if(check(mid))
			l=mid; 
		else
			r=mid-1;
	}
	cout<<l; 
    return 0;
}
2024/7/16 16:25
加载中...