Pagini recente » Cod sursa (job #3206081) | Cod sursa (job #303449) | Cod sursa (job #902300) | Cod sursa (job #2865344) | Cod sursa (job #1323148)
# include <iostream>
# include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int arb[400066];
int val, poz, n, m, x, y, maxim, k, i;
void update(int nod, int st, int dr)
{
if(st == dr)
{
arb[nod] = val;
return;
}
int med = (st + dr) / 2;
if(med >= poz)
update(nod*2, st, med);
else
update(nod*2+1, med+1, dr);
arb[nod] = max(arb[nod*2], arb[nod*2+1]);
}
void query(int nod, int st, int dr)
{
if(st >= x && dr <= y)
{
maxim = max(maxim, arb[nod]);
return;
}
int med = (st + dr) / 2;
if(med >= x)
query(nod*2, st, med);
if(y>med)
query(nod*2+1, med+1, dr);
}
int main()
{
f >> n >> m;
for(i = 1; i <= n; ++i)
{
f >> val;
poz = i;
update(1, 1, n);
}
while(m--)
{
f >> k;
if(k == 1)
{
f >> poz >> val;
update(1, 1, n);
}
else
{
f >> x >> y;
maxim = 0;
query(1, 1, n);
g << maxim << '\n';
}
}
return 0;
}