#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=200200,DEPTH=23;
int n,m,q,tot;
int a[N],b[N],T[N],sum[N*DEPTH],L[N*DEPTH],R[N*DEPTH];
inline int build(int l,int r){
int x=tot++,mid;
if(l<r)mid=(l+r)>>1,build(l,mid),build(mid+1,r);
return x;
}
int update(int l,int r,int k,int pre){
int x=tot++,mid=(l+r)>>1;
L[x]=L[pre],R[x]=R[pre],sum[x]=sum[pre]+1;
if(l<r){
if(k<=mid)L[x]=update(l,mid,k,L[pre]);
else R[x]=update(mid+1,r,k,R[pre]);
}
return x;
}
int query(int phase1,int phase2,int l,int r,int k){
int t=sum[L[phase2]]-sum[L[phase1]],mid=(l+r)>>1;
if(l<r){
if(k<=t)return query(L[phase1],L[phase2],l,mid,k);
else return query(R[phase1],R[phase2],mid+1,r,k-t);
}
}
int plus(int as,int ad){
n=2,q=2;
a[1]=b[1]=as,a[2]=b[2]=ad;
sort(b+1,b+n+1),m=unique(b+1,b+n+1)-1-b,T[0]=build(1,m);
for(int i=1;i<=n;++i){
int t=lower_bound(b+1,b+m+1,a[i])-b;
T[i]=update(1,m,t,T[i-1]);
}
return b[query(T[0],T[2],1,m,1)]+b[query(T[0],T[2],1,m,2)];
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 10 us | 56 KB | Time Limit Exceeded | Score: 0 | 显示更多 |