Pagini recente » Cod sursa (job #2115549) | Cod sursa (job #1291651) | Cod sursa (job #1291578) | Cod sursa (job #1261058) | Cod sursa (job #2352273)
#include <fstream>
using namespace std;
#define dim 100001
ifstream f("arbint.in");
ofstream g("arbint.out");
int n, m;
int max_arb[4*dim+66];
int strt, sf, val, pos, maxim;
int Maxim(int a, int b)
{
if ( a > b )
return a;
return b;
}
void Actualizare(int nod, int st, int dr)
{
if (st==dr)
{
max_arb[nod]=val;
return;
}
int mij=(st+dr)/2;
if (pos<=mij)
Actualizare(2*nod,st,mij);
else
Actualizare(2*nod+1,mij+1,dr);
max_arb[nod] = Maxim( max_arb[2*nod], max_arb[2*nod+1] );
}
void Interogare(int nod, int st, int dr)
{
if (strt<=st && dr<=sf)
{
if (maxim<max_arb[nod])
maxim = max_arb[nod];
return;
}
int mij = (st+dr)/2;
if (strt<=mij)
Interogare(2*nod,st,mij);
if (mij<sf)
Interogare(2*nod+1,mij+1,dr);
}
int main()
{
int x, A, B;
f>>n>>m;
for(int i=1; i<=n; i++)
{
f>>x;
pos=i;
val=x;
Actualizare(1,1,n);
}
for(int i=1; i<=m; i++)
{
f>>x>>A>>B;
if(x==0)
{
maxim=-1;
strt=A;
sf=B;
Interogare(1,1,n);
g<<maxim<<endl;
}
else
{
pos=A;
val=B;
Actualizare(1,1,n);
}
}
}