Pagini recente » Cod sursa (job #1174269) | Cod sursa (job #630289) | Cod sursa (job #823387) | Cod sursa (job #342150) | Cod sursa (job #2552449)
#include <fstream>
using namespace std;
ifstream f ("arbint.in");
ofstream g ("arbint.out");
int n, m, maxim, arbore[300005];
int i, x, y, poz, val, type;
void update (int nod, int st, int dr)
{
if (st == dr)
{
arbore[nod] = val;
return;
}
int mij = (st + dr) / 2;
if (poz <= mij)
update(nod*2, st, mij);
else
update(nod*2+1, mij+1, dr);
arbore[nod] = max(arbore[nod*2], arbore[nod*2+1]);
}
void querry (int nod, int st, int dr)
{
if (x <= st && y >= dr)
{
maxim = max(maxim, arbore[nod]);
return;
}
int mij = (st + dr) / 2;
if (x <= mij)
querry(nod*2, st, mij);
if (mij < y)
querry(nod*2+1, mij+1, dr);
}
int main()
{
f >> n >> m;
for (i=1; i<=n; i++)
{
f >> val;
poz = i;
update(1, 1, n);
}
for (i=1; i<=m; i++)
{
f >> type >> x >> y;
if (type == 0)
{
maxim = 0;
querry(1, 1, n);
g << maxim << '\n';
}
else {
poz = x, val = y;
update(1, 1, n);
}
}
return 0;
}