模考时平衡树忘了,想用树状数组骗分
#include <bits/stdc++.h>
using namespace std;
#define N 10000001
int n,book[N],c[N];
void add(int x,int k){for(int i=x;i<=1000001;i+=(i&-i)) c[i]+=k;}
int getsum(int x){
int res=0;
for(int i=x;i;i-=(i&-i)) res+=c[i];
return res;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
int opt,x; cin>>opt>>x;
if(opt==1){
add(x,1); book[x]++;
}else if(opt==2){
add(x,-1); book[x]--;
}else if(opt==3){
cout<<getsum(x-1)+1<<endl;
}else if(opt==4){
int l=1,r=1000001;
while(l<r){
int mid=(l+r)>>1;
if(getsum(mid)>=x) r=mid;
else l=mid+1;
}
cout<<l<<endl;
}else if(opt==5){
for(int i=x-1;i>=1;i--){
if(book[i]){
cout<<i<<endl;
break;
}
}
}else{
for(int i=x+1;i<=1000001;i++){
if(book[i]){
cout<<i<<endl;
break;
}
}
}
}
return 0;
}