就是递归调用split的时候,split里面的x,p可以随便用吗,即如split(tr[p].r, v, tr[x].r, y)可以写成split(tr[p].r, v, tr[p].r, y);或split(tr[x].r, v, tr[x].r, y);我感觉可能有点影响,但还是过了模板题
void split(int p, int v, int &x, int &y){
if(!p){ x = y = 0; return;}
if(tr[p].val <= v){ x = p; split(tr[p].r, v, tr[x].r, y);}
else{ y = p; split(tr[p].l, v, x, tr[y].l);}
pushup(p);
}