Pagini recente » Cod sursa (job #2010977) | Cod sursa (job #2073169) | Cod sursa (job #473371) | Cod sursa (job #1796117) | Cod sursa (job #405079)
Cod sursa(job #405079)
# include <fstream>
# include <cstdio>
using namespace std;
# define max Max
int n, m, v[600000], poz, x, a, b, max;
void arb (int nod, int st, int dr)
{
if (st==dr)
{
v[nod]=x;
return;
}
int mij=(st+dr)/2;
if (poz<=mij)arb(2*nod, st, mij);
else arb(2*nod+1, mij+1, dr);
if (v[2*nod]>v[2*nod+1])v[nod]=v[2*nod];
else v[nod]=v[2*nod+1];
}
void cauta (int nod, int st, int dr)
{
if (a<=st && dr<=b)
{
if (max<v[nod])max=v[nod];
return;
}
int mij=(st+dr)/2;
if (a<=mij)cauta(2*nod, st, mij);
if (mij<b)cauta(2*nod+1, mij+1, dr);
}
int main ()
{
ifstream fin ("arbint.in");
freopen ("arbint.out", "w", stdout);
fin>>n>>m;
for (int i=1;i<=n;i++)
{
fin>>x;
poz=i;
arb(1, 1, n);
}
int k;
for (;m;--m)
{
fin>>k>>a>>b;
if (k==0)
{
max=-1;
cauta(1, 1, n);
printf("%d\n", max);
}
else
{
poz=a;
x=b;
arb(1, 1, n);
}
}
return 0;
}