Pagini recente » Cod sursa (job #1317148) | Cod sursa (job #2781134) | Cod sursa (job #2427730) | Cod sursa (job #2571233) | Cod sursa (job #2481564)
#include <bits/stdc++.h>
using namespace std;
int n,x,a,b,st,dr,Maxarb[400004],Max,start,finish,nod,val,pos,m;
void querry(int st ,int dr ,int nod){
if(start<=st&&dr<=finish){
if(Max<Maxarb[nod]) Max=Maxarb[nod];
/// cout<<Max<<endl;
return;
}
int m=(st+dr)/2;
if(start<=m) querry(st,m,nod*2);
if(m<finish) querry(m+1,dr,nod*2+1);
}
void update(int st,int dr ,int nod){
if(st==dr){
Maxarb[nod]=val;
return;
}
int m=(st+dr)/2;
if(pos<=m) update(st,m,2*nod);
else update(m+1,dr,2*nod+1);
Maxarb[nod]=max(Maxarb[2*nod],Maxarb[2*nod+1]);
}
int main()
{
cin>>n >>m;
for(int i=1;i<=n;i++){
cin>>x;
pos=i;
val=x;
update(1,n,1);
}
for(int i=1;i<=n;i++){
cin>>x >>a >>b;
if(x==0){
Max=-1;
start=a;
finish=b;
querry(1,n,1);
cout<<Max;
}
else {
pos=a;
val=b;
update(1,n,1);
}
}
return 0;
}