题7: 砍树
2023-08-14 16:57:13
发布于:广东
#include<bits/stdc++.h>
using namespace std;
long long m,a[1000005],l,r,n,k;
bool check(long long m){
long long sum=0;
for(long long i=0;i<n;i++){
if(a[i]>m)sum+=a[i]-m;
}
return sum>=k;
}
long long find(){
while(l<r){
long long m=l+r+1>>1;
if(check(m))l=m;
else r=m-1;
}
return l;
}
int main(){
cin>>n>>k;
for(long long i=0;i<n;i++){
scanf("%d",a+i);
if(r<a[i])r=a[i];
}
cout<<find();
return 0;
}
这里空空如也
有帮助,赞一个