Pagini recente » Cod sursa (job #1454059) | Cod sursa (job #1420630) | Cod sursa (job #462136) | Cod sursa (job #2716223) | Cod sursa (job #2875165)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int a[400005];
int n,m;
void Update(int x,int y)
{
a[x]=y;
x/=2;
while(x>=1)
{
a[x]=max(a[2*x],a[2*x+1]);
x/=2;
}
}
int Query(int p,int x,int y,int st,int dr)
{
if(x==st && y==dr) return a[p];
int mij=(st+dr)/2;
if(y<=mij) return Query(p*2,x,y,st,mij);
if(mij<x) return Query(p*2+1,x,y,mij+1,dr);
return max(Query(p*2,x,mij,st,mij),Query(p*2+1,mij+1,y,mij+1,dr));
}
int main()
{
fin>>n>>m;
int k=1;
for(k=1;k<n;k*=2)
;
for(int i=k;i<k+n;i++)
fin>>a[i];
for(int i=k-1;i>=1;i--)
a[i]=max(a[2*i],a[2*i+1]);
n=k;
for(int i=1;i<=m;i++)
{
int op,x,y;
fin>>op>>x>>y;
if(op==0) fout<<Query(1,x,y,1,n)<<"\n";
else Update(n-1+x,y);
}
return 0;
}