砍树题解
2025-07-25 18:20:33
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,l=0,r=0,ans;
cin>>n>>m;
int t[10000000]={0};
for(int i = 1;i <= n;i++){
cin>>t[i];
r=max(r,t[i]);
}
while(l<=r){
int mid=(l+r)/2;
long long sum=0;
for(int i = 1;i <= n;i++){
if(t[i]>mid)sum+=t[i]-mid;
}
if(sum>=m){
ans=mid;
l=mid+1;
}else{
r=mid-1;
}
}
cout<<ans;
return 0;
}
这里空空如也










有帮助,赞一个