Pagini recente » Cod sursa (job #2216245) | Cod sursa (job #2064809) | Cod sursa (job #2400941) | Cod sursa (job #2184376) | Cod sursa (job #2225169)
#include <fstream>
#define dim 100005
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n, m, i, caz, maxim, gx, gy , val, mij;
int v[dim], arb [4*dim];
void update( int cod , int st, int dr)
{
if( gx <= st && dr <= gy)
{
arb[cod] = val;
return;
}
mij = (st+dr)/2;
if( gx <= mij )
update( 2*cod, st, mij);
if( gy > mij )
update(2*cod+1, mij+1, dr);
arb[cod] = max(arb[2*cod], arb[2*cod+1]);
}
void query( int cod, int st, int dr )
{
if( gx <= st && dr <= gy )
{
maxim = max( maxim, arb[cod] );
return;
}
mij = ( st+dr)/2;
if( gx <= mij )
query(2*cod, st, mij);
if( gy > mij )
query(2*cod+1, mij+1, dr);
}
int main()
{
f >> n >> m ;
for ( i = 1 ; i <= n; ++i )
f >> v[i];
for( i = 1 ; i <= n ; i++ )
{
gx = gy = i;
val = v[i];
update( 1, 1, n);
}
while ( m > 0 )
{
f >> caz ;
if ( caz == 0 )
{
f >> gx >> gy;
maxim = 0;
query( 1, 1, n);
g << maxim << "\n";
}
else
{
f >> gx >> val;
gy = gx;
update( 1, 1, n);
}
m--;
}
return 0;
}