对的
int build_tree(int x,int l,int r){
if(l>r) return 0;
int mid=(l+r)>>1,now=++tot;
t[now].ch[0]=t[now].ch[1]=0;
t[now].val=a[mid];
t[now].fa=x;
t[now].tag=0;
t[now].ch[0]=build_tree(now,l,mid-1);
t[now].ch[1]=build_tree(now,mid+1,r);
maintain(now);
return now;
}
错误的
int build_tree(int x,int l,int r){
if(l>r) return 0;
int mid=(l+r)>>1,now=++tot;
t[now].ch[0]=t[now].ch[1]=0;
t[now].val=a[mid];
t[now].fa=x;
t[now].tag=0;
t[now].ch[0]=build_tree(now,l,mid-1);
t[now].ch[1]=build_tree(now,mid+1,r);
maintain(now);
return tot;
}