Cod sursa(job #2551921)

Utilizator modulopaulModulopaul modulopaul Data 20 februarie 2020 13:00:56
Problema Hotel Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <iostream>
#include <fstream>
#define MAXN 100001
#define sh short

using namespace std;
ifstream fin("hotel.in");
ofstream fout("hotel.out");
bool busy[4*MAXN+66];
int n;
int in,out;
void act(int nod,int st,int dr,bool ac){
    if(nod==2){
        nod=nod;
    }
    if(st==dr){
        if(in<=st and st<=out)
            busy[nod]=ac;
        return;
    }
    int mij=(st+dr)/2;
    if(in<=mij) act(nod*2,st,mij,ac);
    if(out>mij) act(nod*2+1,mij+1,dr,ac);
    busy[nod]=busy[nod*2+1]|busy[nod*2];
}
void afis(){
    fout<<busy[1]<<'\n';
    fout<<busy[2]<<' '<<busy[3]<<'\n';
    for(int i=4;i<=7;i++)
        fout<<busy[i]<<' ';
    fout<<'\n';
    for(int i=8;i<=15;i++)
        fout<<busy[i]<<' ';
    fout<<'\n';
    fout<<busy[16]<<' '<<busy[17]<<' '<<busy[20]<<' '<<busy[21]<<' ';
    fout<<busy[22]<<' '<<busy[23];
}
int main(){
    int nrc;
    fin>>n>>nrc;
    for(int i=1;i<=nrc;i++){
        sh tsk;
        fin>>tsk;
        if(tsk==1){
            int m;
            fin>>in>>m;
            out=in+m-1;
            act(1,1,n,1);
            afis();
        }
        else if(tsk==2){
            int m;
            fin>>in>>m;
            out=in+m-1;
            act(1,1,n,0);
            afis();
        }
        else{
            tsk=3;
        }
    }
    return 0;
}