10分求助,玄关
查看原帖
10分求助,玄关
1252609
jinitaimei11楼主2024/12/22 11:46
#include <bits/stdc++.h>
using namespace std;
long long M,N,H[1000010];
long long countsum(long long midd){
    long long sum = 0;
    for(int i = 1;i<=N;i++){
            if(H[i]>midd) sum+=H[i]-midd;
    }
    return sum;
}
int main(){
    cin >> N >> M;
    for(int i = 1;i <= N;i++){
        cin >> H[i];
    }
    long long maxx,minn=0,midd,sum;
    sort(H+1,H+N+1);
    minn = H[0];
    maxx = H[N];
    while(minn <= maxx){
        midd = minn + (maxx-minn) / 2;
        sum=countsum(midd);
        if(sum == M){
            cout << midd;
            return 0;
        }else if(sum < M){
            maxx = midd-1;
        }else{
            minn = midd+1;
        }
    }
}
2024/12/22 11:46
加载中...