Pagini recente » Cod sursa (job #511999) | Cod sursa (job #688716) | Cod sursa (job #2721013) | Cod sursa (job #1162094) | Cod sursa (job #2401316)
#include <fstream>
using namespace std;
ifstream in ("arbint.in");
ofstream out ("arbint.out");
int arb[1<<18], a, b, poz, val;
int qwery (int p, int st, int dr)
{
if (a<=st && dr<=b)
return arb[p];
int m=(st+dr)/2, m1=-1, m2=-1;
if (a<=m)
m1=qwery(2*p, st, m);
if (b>m)
m2=qwery(2*p+1, m+1, dr);
return max(m1, m2);
}
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 main()
{
int n, m, x;
in>>n>>m;
for (int i=1; i<=n; i++)
{
in>>val;
poz = i;
update(1, 1, n);
}
for (int i=1; i<=m; i++)
{
in>>x>>a>>b;
if (x==0)
out<<qwery(1, 1, n)<<"\n";
else
{
poz = a;
val = b;
update(1, 1, n);
}
}
return 0;
}