Pagini recente » Cod sursa (job #2547323) | Cod sursa (job #2937422) | Cod sursa (job #3161964) | Cod sursa (job #799797) | Cod sursa (job #2195927)
#include <bits/stdc++.h>
using namespace std;
#define L nod << 1
#define R L | 1
int n, m, a[400000], x, y, q;
void update(int nod, int st, int dr){
if (st == dr){
a[nod] = y;
return;
}
int mid = (st + dr) >> 1;
if (x <= mid) update(L, st, mid);
else update(R, mid+1, dr);
a[nod] = max(a[L], a[R]);
}
int query(int nod, int st, int dr){
if (st >= x && dr <= y) return a[nod];
int mid = (st + dr) >> 1, left = 0, right = 0;
if (x <= mid) left = query(L, st, mid);
if (y > mid) right = query(R, mid+1, dr);
return max(left, right);
}
int main(){
ifstream cin ("arbint.in");
ofstream cout ("arbint.out");
cin >> n >> m;
for (x = 1; x <= n; x++) cin >> y, update(1, 1, n);
while (m--){
cin >> q >> x >> y;
if (q == 1) update(1, 1, n);
else cout << query(1, 1, n) << "\n";
}
return 0;
}