Pagini recente » Cod sursa (job #353358) | Cod sursa (job #814110) | Cod sursa (job #1565818) | Cod sursa (job #1791370) | Cod sursa (job #2122479)
#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=n-1;i>0;i--)
a[i]=max(a[i<<1],a[i<<1|1]);
}
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;
for(i=1;i<=n;i++)
fin>>a[n+i-1];
build();
for(i=1;i<=m;i++)
{
fin>>C>>A>>B;
if(C==1)update(A,B);
if(C==0)
{
fout<<query(A,B)<<'\n';
}
}
return 0;
}