Pagini recente » Cod sursa (job #2918090) | Cod sursa (job #2330951) | Cod sursa (job #1252115) | Cod sursa (job #1681488) | Cod sursa (job #2479714)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int n, q;
int aint[262145];
int query(int ql, int qr, int l = 1, int r = n, int nod = 1)
{
if (ql <= l && r <= qr)
return aint[nod];
int mid = (l + r) / 2;
int maxx = 0;
if (ql <= mid)
maxx = max(maxx, query(ql, qr, l, mid, 2 * nod));
if (mid < qr)
maxx = max(maxx, query(ql, qr, mid + 1, r, 2 * nod + 1));
return maxx;
}
void update(int pos, int val, int l = 1, int r = n, int nod = 1)
{
if (l == r && l == pos)
aint[nod] = val;
else
{
int mid = (l + r) / 2;
if (pos <= mid)
update(pos, val, l, mid, 2 * nod);
else
update(pos, val, mid + 1, r, 2 * nod + 1);
aint[nod] = max(aint[2 * nod], aint[2 * nod + 1]);
}
}
int main()
{
in >> n >> q;
for (int i = 1; i <= n; i++)
{
int x;
in >> x;
update(i, x);
}
while (q--)
{
int t, a, b;
in >> t >> a >> b;
if (t == 0)
out << query(a, b) << '\n';
else
update(a, b);
}
}