Pagini recente » Cod sursa (job #3267280) | Cod sursa (job #471309) | Cod sursa (job #2409219) | Cod sursa (job #1753519) | Cod sursa (job #386199)
Cod sursa(job #386199)
#include<stdio.h>
long arb[400100],n,p,m,pos,val,nr,max;
void update(long nod,long left,long right)
{
if(left==right)
{
arb[nod]=val;
return;
}
long div=(left+right)/2;
if(pos<=div)update(nod*2,left,div);
else update(nod*2+1,div+1,right);
}
void cross(long nod,long left,long right)
{
if(left==right)
{
if(!arb[nod])
{
++nr;
if(nr>max)max=nr;
}
else nr=0;
return;
}
long div=(left+right)/2;
cross(nod*2,left,div);
cross(nod*2+1,div+1,right);
}
int main()
{
FILE*f=fopen("hotel.in","r");
fscanf(f,"%ld %ld",&n,&p);
FILE*g=fopen("hotel.out","w");
int c;
for(;p;--p)
{
fscanf(f,"%d",&c);
if(c!=3)
{
fscanf(f,"%ld %ld",&pos,&m);
val=!(c-1);
while(m-->0)
{update(1,1,n);++pos;}
}
else
{
nr=0;
max=-1;
cross(1,1,n);
fprintf(g,"%ld\n",max);
}
}
fclose(f);
fclose(g);
return 0;
}