这里是rotate和splay函数
void rotate(int x){ int y=pre[x],z=pre[y],d=ch[y][0]==x; ch[y][d^1]=ch[x][d];pre[ch[x][d]]=y; ch[z][ch[z][1]==y]=x;pre[x]=z; ch[x][d]=y;pre[y]=x;maintain(y);}int q[maxn],top;void splay(int x){ for(int i=x;i;i=pre[i]) q[++top]=i; if(q[top]!=x) fa[x]=fa[q[top]],fa[q[top]]=0; while(top) pushdown(q[top--]); while(pre[x]) { int y=pre[x],z=pre[y]; if(pre[y]) if(ch[y][0]==x^ch[z][0]==y) rotate(x);else rotate(y); rotate(x); } maintain(x);}