Pagini recente » Cod sursa (job #3365467) | Cod sursa (job #3366154) | Cod sursa (job #3366159) | Cod sursa (job #3365468) | Cod sursa (job #3366378)
#include <bits/stdc++.h>
using namespace std;
bool INP=true;
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
if(INP){
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
}
int N,Q;cin>>N>>Q;
int zp=1<<(int)ceil(log2(N));
vector<int> arb(2*zp,0);
for(int i=0;i<N;i++){
cin>>arb[i+zp];
}
for(int i=zp-1;i>0;i--){
arb[i]=max(arb[i+i],arb[i+i+1]);
}
for(int i=0;i<Q;i++){
int t,a,b;cin>>t>>a>>b;
if(t==0){//maxintervalab
int l=a+zp-1, r=b+zp-1;
int res=0;
while(l<=r){
if(l%2==1){
res=max(res,arb[l]);
l++;
}
if(r%2==0){
res=max(res,arb[r]);
r--;
}
l/=2;
r/=2;
}
cout<<res<<'\n';
}
else{
arb[a+zp-1]=b;
int n=(a+zp-1)/2;
while(n>0){
arb[n]=max(arb[n+n],arb[n+n+1]);
n/=2;
}
}
}
}