题目通道\]([【模板】普通平衡树 - 洛谷](https://www.luogu.com.cn/problem/P3369 "【模板】普通平衡树 - 洛谷"))
```cpp
#include
using namespace std;
const int maxn=1e7;
#define int long long
struct node
{
int l;
int r;
int val;
int sval;
int size;
};
node tree[maxn];
int root=0;
int idx=0;
void newnode(int &x,int v)
{
x=++idx;
tree[idx].val=v;
tree[idx].sval=rand();
tree[idx].size=1;
}
void pushup(int pos)
{
tree[pos].size=tree[tree[pos].l].size+tree[tree[pos].r].size+1;
}
void split(int pos,int val,int &x,int &y)//按值分裂,取决于树的路径长,O(log n)
{
if(!pos)
{
x=y=0;
return;
}
if(tree[pos].val<=val)
{
x=pos;
split(tree[x].r,val,tree[x].r,y);
pushup(x);
}
else
{
y=pos;
split(tree[y].l,val,x,tree[y].l);
pushup(y);
}
}
int merge(int x,int y)//只需要考虑两棵树根节点的大小,因为它们内部都是有序的。返回值为新树的根节点,O(log n)
{
if(!x||!y)return x+y;
if(tree[x].sval>n;
for(int i=1;i<=n;i++)
{
cin>>op>>s;
if(op==1)
{
ins(s);
}
if(op==2)
{
del(s);
}
if(op==3)
{
cout<