Pagini recente » Cod sursa (job #1398669) | Cod sursa (job #2248089) | Cod sursa (job #1224284) | Cod sursa (job #2668131) | Cod sursa (job #2884324)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int A[400001], n, m, a, b;
void arbintSet(int nod=1, int st=1, int dr=n)
{
if (st==dr)
{
A[nod] = b;
return;
}
int mj = (st+dr)/2;
if (a<=mj)
arbintSet(nod*2, st, mj);
else
arbintSet(nod*2+1, mj+1, dr);
A[nod]=max(A[nod*2], A[nod*2+1]);
}
int arbintGet(int nod=1, int st=1, int dr=n)
{
if (a<=st&&dr<=b)
{
return A[nod];
}
int mj = (st+dr)/2, r=-1;
if (a<=mj)
r=max(r, arbintGet(nod*2, st, mj));
if (mj<b)
r=max(r, arbintGet(nod*2+1, mj+1, dr));
return r;
}
int main()
{
fin>>n>>m;
for (a=1; a<=n; a++)
{
fin>>b;
arbintSet();
}
for (int i=1; i<=m; i++)
{
int op;
fin>>op>>a>>b;
if (op==0)
fout<<arbintGet()<<'\n';
if (op==1)
arbintSet();
}
fin.close();
fout.close();
return 0;
}