Pagini recente » Cod sursa (job #3260141) | Cod sursa (job #2985427) | Cod sursa (job #6513) | Cod sursa (job #2976690) | Cod sursa (job #2425033)
#include <bits/stdc++.h>
#define INF 10000
using namespace std;
int n;
int arb[400000], poz, val, a, b;
void update(int p, int st, int dr)
{
if(st == dr)
{
arb[p] = val;
return;
}
int m = (st + dr) / 2;
if(poz <= m)
update(2*p, st, m);
else
update(2*p+1, m+1, dr);
arb[p] = max(arb[2*p], arb[2*p+1]);
}
int query(int p, int st, int dr)
{
if(a <= st && dr <= b)
return arb[p];
int m = (st + dr) / 2, m1 = -INF, m2 = -INF;
if(a <= m)
m1 = query(2*p, st, m);
if(b > m)
m2 = query(2*p+1, m+1, dr);
return max(m1, m2);
}
int main()
{
ifstream fin("arbint.in");
ofstream fout("arbint.out");
ios_base::sync_with_stdio(false);
int m, i, x;
fin >> n >> m;
for(poz = 1; poz <= n; ++poz)
{
fin >> val;
update(1, 1, n);
}
do {
fin >> x;
if(x == 1)
{
fin >> poz >> val;
update(1, 1, n);
}
else
{
fin >> a >> b;
(fout << query(1, 1, n)).put('\n');
}
} while(--m);
return 0;
}