tag1处,直接输出insert()有值,但赋值给ls后再输出是0.
查了好久,想不明白,崩溃ing
#define mid ((l+r)>>1)
struct Segmenty{
#define lson ls[x],l,mid
#define rson rs[x],mid+1,r
vector<int> a=vector<int>(2),ls=vector<int>(2),rs=vector<int>(2);
void update(int x){
a[x]=a[ls[x]]+a[rs[x]];
}
int insert(int x,int l,int r,int q){
if(!x)x=a.size(),a.pb(0),ls.pb(0),rs.pb(0);
ptln(q,":",l,r,x,a[x]);
if(l==r&&r==q){a[x]++;return x;}
if(q<=mid)ls[x]=insert(lson,q);//tag1
if(q>mid)rs[x]=insert(rson,q);
update(x);
ptln(q,"&",x,ls[x],rs[x]);
return x;
}