QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#873419#9123. Kth SumLuluRE 0ms0kbC++142.1kb2025-01-26 13:29:322025-01-26 13:29:33

Judging History

你现在查看的是最新测评结果

  • [2025-01-26 13:29:33]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:0kb
  • [2025-01-26 13:29:32]
  • 提交

answer

/*
Author:Eraine
Contest:HB #3
Problem:election
Time:2025 - 1 - 26
Think carefully and type.
*/
#include<bits/stdc++.h>
#define ll long long
#define pi pair<int,int>
#define mkp(x,y) make_pair(x,y)
#define fi first
#define se second
#define lc tr[i].ch[0]
#define rc tr[i].ch[1]
#define Lc tr[j].ch[0]
#define Rc tr[j].ch[1]
#define REP(i,l,r) for(int i=(l);i<=(r);i++)
#define PER(i,r,l) for(int i=(r);i>=(l);i--)
using namespace std;
inline ll read(){
    ll x=0,f=1;
    char c=getchar();
    while(!isdigit(c)){
        if(c=='-')f=-1;
        c=getchar();
    }
    while(isdigit(c)){
        x=(x<<3)+(x<<1)+c-'0';
        c=getchar();
    }
    return x*f;
}
void write(ll x){
    if(x<0)putchar('-'),x=-x;
    if(x>9)write(x/10);
    putchar(x%10+'0');
}
const int N=5e4+5;
ll n,m,k,a[N],b[N],c[N];
inline void solve(ll val){
    ll i=1,j=n,l,r,res;
    while(i<=n&&j){
        if(b[i]+c[j]<=val){
            l=i+1,r=n,res=i;
            while(l<=r){
                ll mid=(l+r)/2;
                if(b[mid]+c[j]<=val)res=mid,l=mid+1;
                else r=mid-1;
            }
            k-=(ll)(res-i+1)*j;
            if(k<=0)return;
            i=res+1;
        }else{
            l=1,r=j-1,res=j;
            while(l<=r){
                ll mid=(l+r)/2;
                if(b[i]+c[mid]>val)res=mid,r=mid-1;
                else l=mid+1;
            }
            j=res-1;
        }
    }
}
bool check(ll val){
    k=m;
    REP(i,1,n){
        if(a[i]>val)break;
        solve(val-a[i]);
        if(k<=0)return 0;
    }
    return 1;
}
ll Find(){
    ll l=a[1]+b[1]+c[1],r=a[n]+b[n]+c[n],res=a[1]+b[1]+c[1]-1;
    while(l<=r){
        ll mid=(l+r)/2;
        if(check(mid))res=mid,l=mid+1;
        else r=mid-1;
    }
    return res+1;
}
int main(){
    freopen("election.in","r",stdin);
    freopen("election.out","w",stdout);
    n=read(),m=read();
    REP(i,1,n)a[i]=read();sort(a+1,a+n+1);
    REP(i,1,n)b[i]=read();sort(b+1,b+n+1);
    REP(i,1,n)c[i]=read();sort(c+1,c+n+1);
    write(Find()),putchar('\n');
    return 0;
}

详细

Test #1:

score: 0
Dangerous Syscalls

input:

2 4
1 2
3 4
5 6

output:


result: