Pagini recente » Cod sursa (job #2255835) | Cod sursa (job #2819170) | Cod sursa (job #2354679) | Cod sursa (job #2145228) | Cod sursa (job #1807829)
#include <bits/stdc++.h>
using namespace std;
int ind, val, arb[400100], l, r, n, m, b;
void update(int st, int dr, int pos){
if (st==dr){
arb[pos]=val;
return;
}
int mid = (st+dr)/2;
if (ind <= mid) update(st, mid, pos*2);
else update(mid, dr, pos*2 +1);
arb[pos]= max(arb[pos*2], arb[pos*2 +1]);
}
int cer(int st, int dr, int pos){
if (l<=st && dr<=r) return arb[pos];
int a=0, b=0, mid= (st+dr)/2;
if (l<=mid) a= cer(st, mid, 2*pos);
if (r> mid) b= cer(mid+1, dr, 2*pos +1);
return max(a, b);
}
int main(){
ifstream cin("arbint.in");
ofstream cout("arbint.out");
cin>>n>>m;
for (int i=1; i<=n; i++){
cin>>val;
ind=i;
update(1, n, 1);
}
for (int i=0; i<m; i++){
cin>>b;
if(!b){
cin>>l>>r;
cout<<cer(1, n, 1);
} else {
cin>>ind>>val;
update(1, n, 1);
}
}
return 0;
}