急,0分求助
查看原帖
急,0分求助
638141
Literally114514楼主2022/12/4 20:03
#include <iostream>
using namespace std;
#define int long long
int shu[1000010];
int ans=0,n,m,maxtree=-1,mintree=11451419198,temp=0,temp1;
void check(int l,int r){
    temp=0;
    if(l==r){
        return;
    }
    int mid=(l+r)/2;
    for(int i=1;i<=n;i++){
        if(shu[i]>mid){
            temp+=shu[i]-mid;
        }
    }
    if(temp-m>=0){
        ans=mid;
    }
    if(temp-m<0){
        check(l,mid);
    }else{
        check(mid+1,r);
    }

}
signed main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>shu[i];
        if(shu[i]>maxtree){
            maxtree=shu[i];
        }
        if(shu[i]<mintree){
            mintree=shu[i];
        }
    }
    check(maxtree,mintree);
    cout<<ans;
    return 0;
}
2022/12/4 20:03
加载中...