Pagini recente » Cod sursa (job #1417675) | Cod sursa (job #2771339) | Cod sursa (job #747759) | Cod sursa (job #2761152) | Cod sursa (job #2572982)
//#include <iostream>
#include <fstream>
using namespace std;
ifstream cin("arbint.in");
ofstream cout("arbint.out");
int arb[400005],ss,dd,ind,val,n,m;
int query(int st,int dr,int nod){
if(dr<ss)
return 0;
if(dd<st)
return 0;
if(ss<=st and dr<=dd){
return arb[nod];
}
return max(query(st,(st+dr)/2,nod*2),query((st+dr)/2+1,dr,nod*2+1));
}
void update(int st,int dr,int nod){
if(dr<ind)
return;
if(st>ind)
return;
if(st==dr){
arb[nod]=val;
return;
}
update(st,(st+dr)/2,nod*2);
update((st+dr)/2+1,dr,nod*2+1);
arb[nod]=max(arb[nod*2],arb[nod*2+1]);
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
int a;
cin>>a;
ind=i;
val=a;
update(1,n,1);
}
for(int i=1;i<=m;i++){
int cer;
cin>>cer;
if(cer==0){
cin>>ss;
cin>>dd;
cout<<query(1,n,1)<<"\n";
}
else{
cin>>ind>>val;
update(1,n,1);
}
}
return 0;
}