Pagini recente » Cod sursa (job #706719) | Cod sursa (job #1524099) | Cod sursa (job #707558) | Cod sursa (job #682692) | Cod sursa (job #1645225)
#include <fstream>
using namespace std;
int h[400005];
int poz, val;
void update(int node, int st, int dr) {
if(st == dr) {
h[node] = val;
return ;
}
int mid = (st + dr) / 2;
if(poz > mid) update(node * 2 + 1, mid + 1, dr);
if(poz <= mid) update(node * 2, st, mid);
h[node] = max(h[node * 2], h[node * 2 + 1]);
return ;
}
int l, r;
int query(int nod, int st, int dr) {
if(l <= st && dr <= r) return h[nod];
int mid = (st + dr) / 2, mx = 0;
if(l <= mid) mx = query(nod * 2, st, mid);
if(r > mid) mx = max(mx, query(nod * 2 + 1, mid + 1, dr));
return mx;
}
int main()
{
ifstream f("arbint.in");
ofstream g("arbint.out");
int n, m, op, b, c;
f >> n >> m;
for(int i = 1; i <= n; i ++) f >> val, poz = i, update(1, 1, n);
for(int i = 1; i <= m; i ++) {
f >> op >> poz >> val;
if(op) update(1, 1, n);
else l = poz, r = val, g << query(1, 1, n) << "\n";
}
return 0;
}