Pagini recente » Cod sursa (job #428961) | Cod sursa (job #1903686) | Cod sursa (job #89962) | Cod sursa (job #1538720) | Cod sursa (job #2123812)
#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;
}