每个数字的值是tr[k].num+delta
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<ctime>
using namespace std;
struct data{
int l,r,num,rnd,s;
}tr[100001];
int n,Min,root,size,leave,delta,X;
char oper[1];
void update(int k){
tr[k].s=tr[tr[k].l].s+tr[tr[k].r].s+1;
}
void rrotate(int &k){
int t=tr[k].l;
tr[k].l=tr[t].r;
tr[t].r=k;
tr[t].s=tr[k].s;
update(k);
k=t;
}
void lrotate(int &k){
int t=tr[k].r;
tr[k]......
阅读全文