为什么只有40分呀
查看原帖
为什么只有40分呀
490978
小超手123楼主2021/8/9 19:25
#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long a[1000010];
bool p(int h){//求砍树高度为h时,能否得到m的木材 
	int tot=0;
	for(int i=1;i<=n;i++)
	    if(a[i]>h)
	        tot+=a[i]-h;
	return tot>=m;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	    cin>>a[i];
	    
	int left=1,right=1e9,mid,ans;
	
	while(left<=right){ //二分查找 
		mid=(left+right)/2;
		if(p(mid)){  //可为答案 
			ans=mid; //记录答案 
			left=mid+1; //继续查找 
		
		}
		else right=mid-1; 
	}
	cout<<ans;
	return 0;
}
2021/8/9 19:25
加载中...