poj 3667 Hotel 线段树 内存分配问题(二)

2014-11-24 11:12:51 · 作者: · 浏览: 4
t+1);
return ;
}
lazy(i);
int mid=(a[i].l+a[i].r)>>1;
if(left>mid) del(i*2+1,left,right);
else if(right<=mid) del(i*2,left,right);
else{
del(i*2,left,mid);
del(i*2+1,mid+1,right);
}
if(a[i*2].ml==(a[i*2].r-a[i*2].l+1))
a[i].mm=a[i].ml=a[i*2].ml+a[i*2+1].ml;
else a[i].ml=a[i*2].ml;
if(a[i*2+1].ml==(a[i*2+1].r-a[i*2+1].l+1))
a[i].mm=a[i].mr=a[i*2].mr+a[i*2+1].ml;
else a[i].mr=a[i*2+1].mr;

if(a[i*2].ml!=(a[i*2].r-a[i*2].l+1)&&a[i*2+1].mr!=(a[i*2+1].r-a[i*2+1].l+1))
a[i].mm=max(a[i*2].mr+a[i*2+1].ml,max(a[i*2].mm,a[i*2+1].mm));
a[i].len=max(a[i].mm,max(a[i].ml,a[i].mr));
}
int main(){
// freopen("in.txt","r",stdin);
int m,x,y,t;
while(~scanf("%d%d",&n,&m)){
build(1,1,n);
while(m--){
scanf("%d",&t);
if(t==2){
scanf("%d%d",&x,&y);
del(1,x,x+y-1);
}else{ www.2cto.com
scanf("%d",&x);
p=0;
insert(1,x);
printf("%d\n",p);
}
}
}
return 0;
}
作者:youngyangyang04