Cod sursa(job #831232)

Utilizator vladvaldezVlad Dimulescu vladvaldez Data 8 decembrie 2012 12:08:47
Problema Hotel Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <stdio.h>

using namespace std;
FILE *f=fopen("hotel.in","r");
FILE *g=fopen("hotel.out","w");

void update(nod,l,r,si,sf,val)
{
  int m;
  if (l==r){a[nod]+=val;return}
  else
  {
   m=(l+r)/2;
   if (si<=m)update(2*nod,l,m,si,sf,val);
   if (sf>m)update(2*nod,m+1,r,si,sf,val);
   }
}

void query(int nod int l, int r)
{
    int m=(l+r)/2;
    if (l==r)
        {
        if(a[nod]==0)
        {
            k++;
            if(k>max1) max1=k;
        }
        else k=0;
        }
    else
    {
     query(l,m,2*nod);
     query(m+1,r,2*nod+1);
    }
}


int main()
{

fscanf(f,"%d%d",&n,&p);
for(i=1;i<=p;i++)
{
fscanf(f,"%d",&l);
switch(l)
{
    case '1':
    {
      fscanf(f,"%d%d",&p,&nr);
      update(1,1,n,p,p+nr-1,1)
    }
    case '2':
    {
     fscanf(f,"%d%d",&p,&u);
     update(1,1,n,p,p+nr-1,-1)
    }
    case '3':
    {
        k=0;
        max1=0;
     query(1,1,n);
     fprintf(g,"%d",max1);
     }
}


fclose(g);
return 0;
}