【链接】
bzoj2733
【解题报告】
好像是平衡树裸题吧,然后splay启发式合并码掉了。
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100005;
int n,m,Q,w[maxn],c[maxn],fa[maxn];
struct Splay
{
Splay* son[2];
int x,s,p;
Splay (int a=0,int b=0,Splay* t=NULL) {x=a; p=b; s=1; son[0]=son[1]=t;}
int Cmp1(int k) {
if (k==p) return -1; if (k<p) return 0; return 1;}
int Cmp2(int &k) {
int t=son[0]->s+