Pagini recente » Cod sursa (job #1822553) | Cod sursa (job #2138343) | Cod sursa (job #1996637) | Cod sursa (job #824781) | Cod sursa (job #1807424)
#include <bits/stdc++.h>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int t[400100];
int n;
void build () {
for (int i = n-1; i > 0; i--) t[i] = max(t[i<<1], t[i<<1|1]);
}
void update (int p, int value) {
for (t[p += n] = value; p > 1; p >>= 1) t[p>>1] = max(t[p], t[p^1]);
}
int query (int l, int r)
{
int res = 0;
for (l += n, r += n; l < r; l >>= 1, r >>= 1) {
if (l&1) res = max(res, t[l++]);
if (r&1) res = max(res, t[--r]);
}
return res;
}
int main()
{
int q;
cin >> n >> q;
for (int i = 0; i < n; i++) {
cin >> t[n+i];
}
build();
for (int i = 0; i < q; i++) {
int type, ind, val, l, r;
cin >> type;
if (type == 1) {
cin >> ind >> val;
ind--;
update(ind, val);
} else {
cin >> l >> r;
l--;
cout << query(l, r) << "\n";
}
}
}