只是用来存模板的(因为紫荆花之恋写无旋的T了)
#include <bits/stdc++.h>
using namespace std;
inline int rd() {
char ch=getchar(); int i=0,f=1;
while(!isdigit(ch)) {if(ch=='-')f=-1; ch=getchar();}
while(isdigit(ch)) {i=(i<<1)+(i<<3)+ch-'0'; ch=getchar();}
return i*f;
}
const int N=1e5+50;
const int INF=(0x3f3f3f3f)*2;
int n,tot;
int rt,mx[N],w[N],sze[N],lc[N],rc[N],pri[N];
inline int node(int v) {
++tot; sze[tot]=1; mx[tot]=(w[tot]=v);
pri[tot]=(rand()<<15^rand());
return tot;
}
inline void upt(int k) {
mx[k]=max(w[k],max(mx[lc[k]],mx[rc[k]]));
sze[k]=1+sze[lc[k]]+sze[rc[k]];
}
inline void zig(int &k) {
int ls=lc[k],rs=rc[ls];
lc[k]=rs; upt(k);
rc[ls]=k; upt(ls);
k=ls;
}
inline void zag(int &k) {
int rs=rc[k],ls=lc[rs];
rc[k]=ls; upt(k);
lc[rs]=k; upt(rs);
k=rs;
}
inline void inc(int &k,int v) {
if(!k) {k=node(v); return;}
++sze[k];
if(v<w[k]) {
inc(lc[k],v); if(pri[lc[k]]>pri[k]) zig(k);
} else {
inc(rc[k],v); if(pri[rc[k]]>pri[k]) zag(k);
}
}
inline int del(int &k,int v) {
if(w[k]==v) {
if(lc[k]*rc[k]==0) k=lc[k]+rc[k];
else {
if(pri[lc[k]]>pri[rc[k]]) {zig(k); del(rc[k],v);}
else {zag(k); del(lc[k],v);}
}
} else {
if(w[k]<v) del(rc[k],v);
else del(lc[k],v);
}
if(k) upt(k);
}
inline int rk(int k,int v) {
if(!k) return 0;
if(v<w[k]) return rk(lc[k],v);
else return sze[lc[k]]+1+rk(rc[k],v);
}
inline int kth(int k,int v) {
if(sze[lc[k]]>=v) return kth(lc[k],v);
else if(sze[lc[k]]==v-1) return w[k];
else return kth(rc[k],v-sze[lc[k]]-1);
}
inline int pro(int k,int v) {
if(!k) return -INF;
else if(w[k]>v) return pro(lc[k],v);
else return max(w[k],pro(rc[k],v));
}
inline int suf(int k,int v) {
if(!k) return INF;
else if(w[k]<v) return suf(rc[k],v);
else return min(w[k],suf(lc[k],v));
}
int a[N],tl=0;
inline void print(int k) {
if(lc[k]) print(lc[k]);
if(sze[k]!=sze[lc[k]]+sze[rc[k]]) puts("No");
a[++tl]=w[k];
if(rc[k]) print(rc[k]);
}
int main() {
n=rd(); mx[0]=-INF;
for(int i=1;i<=n;i++) {
int op=rd();
if(op==1) inc(rt,rd());
else if(op==2) del(rt,rd());
else if(op==3) printf("%d\n",rk(rt,rd()-1)+1);
else if(op==4) printf("%d\n",kth(rt,rd()));
else if(op==5) printf("%d\n",pro(rt,rd()-1));
else printf("%d\n",suf(rt,rd()+1));
}
}