90分,求大佬调
查看原帖
90分,求大佬调
916086
yaoshuen楼主2023/6/8 21:58
#include <bits/stdc++.h>

using namespace std;
long long n,m,l=0,r=-1;
long long a[1000201];
long long mid;
bool cut(int h){
	int s=0;
	for(int i=1;i<=n;i++){
		if(a[i]>h){
			s+=(a[i]-h);
			if(s>m) return 1;//h高度的锯子够  
		}
	}
	return 0;//不够  
}
int main(){
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%lld",a+i);
		r=max(r,a[i]);
	}
	while(l<=r){
		mid=(l+r)>>1;
		//printf("%d %d %d %d\n",l,r,mid,cut(mid));
		if(cut(mid)){
			l=mid+1;
		} else r=mid-1;
	}
	printf("%lld",r);
	return 0;
}
2023/6/8 21:58
加载中...