p1873求条
  • 板块学术版
  • 楼主0lQAQl0
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/4 14:34
  • 上次更新2024/10/4 15:53:28
查看原帖
p1873求条
723629
0lQAQl0楼主2024/10/4 14:34

套了2个二分,三个测试点没过,大佬帮看下

#include<bits/stdc++.h>
using namespace std;
typedef long long op;
op h[1000000];
op s,g,d,mid,mid2,c;
int check(op t,op l,op r){
    d=0;
    while(l<r){
        mid=l+(r-l)/2;
        if(h[mid]>t){
            r=mid;
        }else{
            l=mid+1;
        }
    }
    for(op i=r;i<s;i++){
        d+=h[i]-t;
    }
    return d;
}
int erfe(op t,op l,op r){
    while(l<r){
        mid2=l+(r-l)/2;
        if(check(mid2,0,s-1)<t){
            r=mid2;
        }else{
            l=mid2+1;
        }
    }

    return r;
}

int main(){
    cin >> s >> g;
    for(op i=0;i<s;i++){
        cin >> h[i];
    }
    sort(h,h+s);
    c=erfe(g,0,h[s-1]);
    cout << c-1;
}
2024/10/4 14:34
加载中...