Pagini recente » Cod sursa (job #2646246) | Cod sursa (job #2069329) | Cod sursa (job #1622892) | Cod sursa (job #2295258) | Cod sursa (job #2700192)
#include <bits/stdc++.h>
#define ll long long
#define sz(x) (int)(x).size()
#define debug(v,n) for (int i = 1; i <= (n); ++i) cout << v[i] << " ";
#define next cout << '\n'
using namespace std;
const int N = 100005;
int n, m;
int best[4 * N + 100], val, pos, a, b, q, maxx;
void maxim(int nod, int l, int r) {
if(a <= l && r <= b) {
maxx = max(maxx, best[nod]);
return;
}
int mid = (l + r) / 2;
if(a <= mid)
maxim(nod * 2, l, mid);
if(mid < b)
maxim(nod * 2 + 1, mid + 1, r);
}
void update(int nod, int l, int r) {
if(l == r) {
best[nod] = val;
return;
}
int mid = (l + r) / 2;
if(pos <= mid)
update(nod * 2, l, mid);
else
update(nod * 2 + 1, mid + 1, r);
best[nod] = max(best[nod * 2], best[nod * 2 + 1]);
}
int main() {
//ifstream fin("date.in.txt");
ifstream fin("arbint.in");
ofstream fout("arbint.out");
fin >> n >> m;
for (int i = 1; i <= n; ++i) {
fin >> val;
pos = i;
update(1, 1, n);
}
while(m--) {
fin >> q >> a >> b;
if(q == 0) {
maxx = -1;
maxim(1, 1, n);
fout << maxx << '\n';
}
else {
pos = a, val = b;
update(1, 1, n);
}
}
return 0;
}