Pagini recente » Cod sursa (job #1258373) | Cod sursa (job #2114085) | Cod sursa (job #894720) | Cod sursa (job #2365339) | Cod sursa (job #2775030)
#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;
}