Pagini recente » Cod sursa (job #2198565) | Cod sursa (job #470652) | Cod sursa (job #411463) | Cod sursa (job #1195315) | Cod sursa (job #459261)
Cod sursa(job #459261)
#include<iostream>
#include<fstream>
using namespace std;
#define common int m=(l+r)/2,L=2*n,R=L+1
int A[300005],B[300005],C[300005],S[300005],N,P;
ofstream fout("hotel.out");
void update(int n,int l,int r,int ql,int qr,int x)
{
if(ql<=l&&qr>=r)
{
C[n]=1;
A[n]=1;
B[n]=1;
if(x==1)
S[n]=1;
else
S[n]=0;
return ;
}
common;
if(ql<=m)
update(L,l,m,ql,qr,x);
if(m<qr)
update(R,m+1,r,ql,qr,x);
A[n]=max(A[L],S[L]+B[L]);
B[n]=max(B[R],S[R]+A[L]);
C[n]=max(max(C[L],C[R]),A[R]+B[L]);
S[n]=S[L]+S[L];
}
void cit()
{int i,x,y,z;
ifstream fin("hotel.in");
fin>>N>>P;
for(i=1;i<=P;i++)
{ fin>>x>>y>>z;
if(x==1||x==2)
update(1,1,N,y,y+z-1,x);
else
fout<<C[1]<<"\n";
}
fin.close();
}
int main()
{ cit();
fout.close();
return 0;
}