/*1.change后要更新a数组
2.删除节点后子节点数量-1*/
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#define N 200010
#define M 1300010
#define inf 1000000000
using namespace std;
struct data{
int l,r,s,w,v,rnd;
}tr[M];
int root[N],a[50001],n,m,sz,tmp;
void update(int k){
tr[k].s=tr[tr[k].l].s+tr[tr[k].r].s+tr[k].w;
}
void lturn(int &k){
int t=tr[k].r;
tr[k].r=tr[t].l;
tr[t].l=k;
tr[t].s=tr[k].s;
update(k);k=t;
}
void rturn(int ......
阅读全文