Cod sursa(job #2123812)

Utilizator alexilasiAlex Ilasi alexilasi Data 6 februarie 2018 17:33:02
Problema Hotel Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("arbint.in");
ofstream fout("arbint.out");

int n,m,i,A,B,C;

int a[200001];

void build()
{
    for(i=1;i<=n;i++)
        a[n+i-1].l=a[n+i-1].r=a[n+i-1].b=1;
    for(i=n-1;i>0;i--)
    {
        a[i].l=a[i].r=a[i].b=a[i<<1].b+a[i<<1|1].b;
    }
}

void update(int p,int x)
{
    a[n+p-1]=x;
    for(int i=(n+p-1)/2;i>0;i>>=1)
    {
        a[i]=max(a[i<<1],a[i<<1|1]);
    }
}

int query(int l,int r)
{
    int ans=0;
    l+=n-1;
    r+=n;
    for(;l<r;l>>=1,r>>=1)
    {
        if(l&1)
            ans=max(ans,a[l++]);
        if(r&1)
            ans=max(ans,a[--r]);
    }
    return ans;
}

int main()
{
    fin>>n>>m;

    build();

    for(i=1;i<=m;i++)
    {
        fin>>C;
        if(C==3)fout<<a[1].b<<'\n';
        else
        {
            fin>>A>>B;
            if(C==1)update(A,A+B-1);
            if(C==2)update(A,B);
        }
    }
    return 0;
}