40分求调
查看原帖
40分求调
1045714
Fecfu楼主2024/7/7 18:37
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e6+5;
int n,m,maax=-1;
int a[maxn];
int h(int x){ //按这个高度能获取多少木材 
	int r=0;
	for(int i=1;i<=n;i++){
		if(a[i]>x) r+=a[i]-x;
	}
	return r;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
    	cin>>a[i];
    	maax=max(maax,a[i]); //找最高的树 
	}
	sort(a+1,a+n+1);
	int l=0,r=maax;
	while(l<r){
		int mid=(l+r)/2;
		if(h(mid)<m){
			r=mid-1;
		}
		else{
			l=mid+1;
		}
	}
	cout<<r;
    return 0;   
}
2024/7/7 18:37
加载中...