在发布了文章 Treap 学习笔记后我认为我的平衡树能力已经登峰造极了。
但是 Treap 真 tmd 太难写了,所以我们的 czy 大佬开发除了一种可以优雅的踩爆 Treap 的绝佳方案。
#include<bits/stdc++.h>
using namespace std;
int n;
struct tree{vector<int> v;void add(int x){v.insert(lower_bound(v.begin(),v.end(),x),x);}void del(int x){v.erase(lower_bound(v.begin(),v.end(),x));}int getrnk(int x){return lower_bound(v.begin(),v.end(),x)-v.begin()+1;}int getval(int x){return v[x-1];}int getpre(int x){return *(--lower_bound(v.begin(),v.end(),x));}int getnxt(int x){return *upper_bound(v.begin(),v.end(),x);}
}tr;
int main(){cin>>n;for(int i=1,op,x;i<=n;i++){cin>>op>>x;if(op==1) tr.add(x);if(op==2) tr.del(x);if(op==3) cout<<tr.getrnk(x)<<endl;if(op==4) cout<<tr.getval(x)<<endl;if(op==5) cout<<tr.getpre(x)<<endl;if(op==6) cout<<tr.getnxt(x)<<endl;}return 0;
}