可偏树是可以合并两个堆的的数据结构。
//左偏树
const int N = 1e5+7;
int num[N];
int l[N],r[N],f[N],h[N];
bool vis[N];
int merge(int x,int y){
if(x== 0 || y == 0) return x+y;
if(num[x] > num[y]) swap(x,y);
r[x] = merge(r[x],y);
f[r[x]] = x;
if(h[r[x]] > h[l[x]]) swap(l[x],r[x]);
h[x] = h[r[x]] +1;
return x;
}
void del(int x){
f[l[x]] = 0,f[r[x]] = 0;
int now = merge(l[x],r[x]);
}