Cod sursa(job #829351)

Utilizator lehman97Dimulescu David lehman97 Data 5 decembrie 2012 10:00:42
Problema Hotel Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <iostream>
#include <stdio.h>

using namespace std;


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

int v[300000],n,p,i,c,a,nr;

int mx(int a ,int b)
{
    if(a>b)return a;else return b;
}


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

    }
    v[nod]=v[2*nod]+v[2*nod+1];
}

/*void query(int l,int r,int nod)
{
    int m=(l+r)/2;
    if(l==r) mx[nod]
    {
        query(l,m,2*nod);
        query(m+1,r,2*nod+1);

    }
    v[nod]=mx(v[2*nod],v[2*nod+1]);

}*/



int main()
{
    fscanf(f,"%d%d",&n,&p);
    update(1,n,1,n,1,1);
    for(i=1;i<=p;i++)
    {
        fscanf(f,"%d",&c);
        switch(c)
        {
            case 1:
            {
                fscanf(f,"%d%d",&a,&nr);
                update(1,n,a,nr+a-1,-1,1);
                break;
            }
            case 2:
            {
                fscanf(f,"%d%d",&a,&nr);
                update(1,n,a,nr+a-1,1,1);
                break;
            }
            case 3:
            {
                fprintf(g,"%d\n",v[1]);
                break;
            }


        }
    }
    fclose(g);
    return 0;
}