一个问题
查看原帖
一个问题
375039
shiq楼主2021/1/6 16:58
#include <bits/stdc++.h>
using namespace std;
long long m,n,h1,h2,a[1000010],mx,h,mid;
int main(){
	cin>>n>>m;
	for(long long i=0;i<n;i++)cin>>a[i],mx=max(mx,a[i]);
	h1=mx;
	h2=0;
	while(1){
		h=0;
		mid=(h1+h2)>>1;
		for(long long i=0;i<n;i++)if(a[i]>mid)h+=a[i]-mid;
		if(h<m) h1=mid-1;
		else h2=mid+1;
		if(h1<h2)break;
/*
	这里为什么不能写成 
	if(h1<=h2)break;
*/
	}
	cout<<h2-1;
	
	return 0;
}
2021/1/6 16:58
加载中...