查看原帖
1428653
tyy_again楼主2025/1/14 09:53
using namespace std;
long long N,M,tree[1000001],maxx=0;
int sum(int h){
	long long s=0;
	for(int i=1;i<=N;i++)
		if(tree[i]>h)
			s=s+tree[i]-h;
	return s;
}
int ef(){
	long long l=0,r=maxx,mid;
	while(l<r){
		mid=l+(r-l)/2;
		long long h=sum(mid);
		if(h==M)
			break;
		else if(h>M)
			l=mid+1;
		else
			r=mid-1;
	}
	return mid;
}
int main(){
	cin>>N>>M;
	for(int i=1;i<=N;i++){
		cin>>tree[i]; 
		maxx=max(maxx,tree[i]);
	}
	cout<<ef();
	return 0;
}
2025/1/14 09:53
加载中...