Pagini recente » Cod sursa (job #2031273) | Cod sursa (job #2373984) | Cod sursa (job #2945694) | Cod sursa (job #1314746) | Cod sursa (job #2869713)
#include <fstream>
using namespace std;
ifstream fin ("arbint.in");
ofstream fout ("arbint.out");
int n, m, a, p, aib[400001], l, r, op;
void update (int poz, int st, int dr) {
if (st == dr) {
aib[poz] = a;
return;
}
int mij = (st + dr) / 2;
if (p <= mij)
update (poz * 2, st, mij);
else
update (poz * 2 + 1, mij + 1, dr);
aib[poz] = max (aib[poz * 2], aib[poz * 2 + 1]);
}
int query (int poz, int st, int dr) {
if (l > dr or r < st)
return 0;
if (l <= st and dr <= r)
return aib[poz];
int mij = (st + dr) / 2;
return max (query (poz * 2, st, mij), query (poz * 2 + 1, mij + 1, dr));
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= n; i++) {
fin >> a; p = i;
update (1, 1, n);
}
for (int i = 1; i <= m; i++) {
fin >> op;
if (op == 0) {
fin >> l >> r;
fout << query (1, 1, n) << '\n';
}
else {
fin >> p >> a;
update (1, 1, n);
}
}
return 0;
}