Pagini recente » Cod sursa (job #1407715) | Cod sursa (job #2243627) | Cod sursa (job #2784724) | Cod sursa (job #574886) | Cod sursa (job #2736881)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int n,m ,t[200005];
void build() {
for(int i = n-1; i >= 1; i--)
t[i] = max(t[i<<1], t[i<<1|1]);
}
void update(int p, int x) {
for(t[p += n] = x; p > 1; p >>= 1)
t[p>>1] = max(t[p], t[p^1]);
}
int query(int l, int r) {
int mx = 0;
for(l += n, r += n; l < r; l >>= 1, r >>= 1) {
if(l&1) mx = max(mx, t[l++]);
if(r&1) mx = max(mx, t[--r]);
}
return mx;
}
int main() {
fin >> n >> m;
for(int i = 0; i < n; i++)
fin >> t[i+n];
build();
while(m--) {
int tt, a, b;
fin >> tt >> a >> b;
if(tt == 0) fout << query(a-1, b) << '\n';
else update(a-1, b);
}
}