Pagini recente » Cod sursa (job #3358766) | Cod sursa (job #3358791) | Cod sursa (job #874675) | Cod sursa (job #926696) | Cod sursa (job #3357987)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
const int NMAX = 1e5 + 5;
int v[NMAX], aib[NMAX];
void update(int poz, int val) {
for(; poz <= NMAX; poz += poz & -poz) {
aib[poz] = max(aib[poz], val);
}
}
int query(int poz) {
int maxim = 0;
for(; poz; poz -= poz & -poz) {
maxim = max(maxim, aib[poz]);
}
return maxim;
}
int query_interval(int st, int dr) {
return query(dr) - query(st - 1);
}
void solve_test() {
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; i++) {
cin >> v[i];
update(i, v[i]);
}
while(m--) {
int op, a, b;
cin >> op >> a >> b;
if(op == 0) {
cout << query_interval(a, b) << '\n';
} else {
update(a, b);
v[a] = b;
}
}
}
int main() {
ifstream cin("arbint.in");
ofstream cout("arbint.out");
solve_test();
return 0;
}