可引起RE(ACCESS_VIOLATION)的建树操作
{
int k=1;
L[1]=1;R[1]=maxn;
for(int i=1;i<=maxn;i++)
if (L[i]<R[i])
{
k++;L[k]=L[i];R[k]=(L[i]+R[i])/2;
k++;L[k]=(L[i]+R[i])/2+1;R[k]=R[i];
}
}
修正
void build(int l,int r,int k)
{
L[k]=l;R[k]=r;mid[k]=(l+r)>>1;
v[k]=1;
if (l<r)
{
build(l,mid[k],k<<1);
build(mid[k]+1,r,(k<<1)|1);
}
}
冗杂的修改操作,一念之差,
void modify(int k,int x,int y,int num)
{
if (x>L[k]||y<R[k]) v[k]=(v[k]==num)?num:0;
else if (x==L[k]&&y==R[k]) v[k]=num;
if (L[k]==R[k]) return;
if (x<=mid[k]) modify(k<<1,x,min(mid[k]