Pagini recente » Cod sursa (job #2471985) | Cod sursa (job #1454365) | Cod sursa (job #1746033) | Cod sursa (job #454113) | Cod sursa (job #2066210)
#include <bits/stdc++.h>
using namespace std;
int n, m, x, y, cod, h[400100], idx, l, r, nr;
void update(int st, int dr, int pos){
if(st == dr){
h[pos] = nr;
return;
}
int mid = (st + dr) / 2;
if(idx <= mid)
update(st, mid, 2*pos);
else
update(mid+1, dr, 2*pos+1);
h[pos] = max(h[2*pos], h[2*pos+1]);
}
int query(int st, int dr, int pos){
if(l <= st && r >= dr)
return h[pos];
int mid = (st + dr) / 2;
int left = 0, right = 0;
if(l <= mid)
left = query(st, mid, 2*pos);
if(r > mid)
right = query(mid+1, dr, 2*pos+1);
return max(left, right);
}
int main(){
ifstream in("arbint.in");
ofstream out("arbint.out");
in >> n >> m;
for(int i = 1; i <= n; i++){
in >> nr;
idx = i;
update(1, n, 1);
}
for(int i = 1; i <= m; i++){
in >> cod >> x >> y;
if(cod){
idx = x;
nr = y;
update(1, n, 1);
} else{
l = x;
r = y;
out << query(1, n, 1) << '\n';
}
}
return 0;
}