Cod sursa(job #2775030)

Utilizator ValiAntonieAntonie Valentin ValiAntonie Data 14 septembrie 2021 02:21:47
Problema Hotel Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <bits/stdc++.h>

using namespace std;

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

int i,n,x,a[500000],m,p,b,c;

void build(int nod, int st, int dr){
    if(st == dr){
        a[nod] = 1;
        return;
    }
    int mij = (st + dr) >> 1;
    build(2*nod,st,mij);
    build(2*nod+1,mij+1,dr);
    a[nod] = dr - st + 1;
}


void update(int nod, int st, int dr, int st2, int dr2){
    if(st == dr && st2 <= st && st <= dr2){
        a[nod] = 0;
        return;
    }
    else if(st == dr)
        return;
    else{
        int mij = (st + dr) >> 1;
        update(2*nod,st,mij,st2,dr2);
        update(2*nod+1,mij+1,dr,st2,dr2);
        if(st2 >= st && dr2 <= dr)
            a[nod] = max(st2-st+1,dr-dr2+1);
        else if(st2 >= st && dr2 >= dr && st2 <= dr)
            a[nod] = st2-st+1;
        else if(st2 <= st && dr2 <= dr && dr2 >= st)
            a[nod] = dr2-dr+1;
        else if(st2 <= st && dr2 >= dr)
            a[nod] = 0;
    }
}



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

build(1,1,n);

for(i=1;i<=m;i++){
    fin>>p;
    if(p == 1){
    fin>>b>>c;
update(1,1,n,b,c);
    }
}
    return 0;
}