Pagini recente » Cod sursa (job #2605097) | Cod sursa (job #900519) | Cod sursa (job #99243) | Cod sursa (job #2346881) | Cod sursa (job #2696623)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int n,m,a,b,c,ans;
int aint[4*NMAX];
void build(int nod,int st,int dr)
{
if(st==dr)
in>>aint[nod];
else
{
int m=(st+dr)/2;
build(nod<<1,st,m);
build((nod<<1)+1,m+1,dr);
aint[nod]=max(aint[2*nod],aint[2*nod+1]);
}
}
void update(int nod,int st,int dr)
{
if(st==dr)
aint[nod]=c;
else
{
int m=(st+dr)/2;
if(b<=m)
update(nod<<1,st,m);
else
update((nod<<1)+1,m+1,dr);
aint[nod]=max(aint[2*nod],aint[2*nod+1]);
}
}
void quest(int nod,int st,int dr)
{
if(st==dr)
ans=max(ans,aint[nod]);
else
{
int m=(st+dr)/2;
if(b<=m)
quest(nod<<1,st,m);
if(c>m)
quest((nod<<1)+1,m+1,dr);
}
}
void cit()
{
in>>n>>m;
}
void prg()
{
build(1,1,n);
while(m--)
{
in>>a>>b>>c;
if(a==0)
{
ans=0;
quest(1,1,n);
out<<ans<<'\n';
}
else
update(1,1,n);
}
}
int main()
{
cit();
prg();
in.close();
out.close();
return 0;
}