Pagini recente » Cod sursa (job #996529) | Cod sursa (job #1032742) | Cod sursa (job #3131241) | Cod sursa (job #841800) | Cod sursa (job #1398318)
#include <fstream>
using namespace std;
#define DIM 100010
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int Arb[4*DIM],i,j,x,y,q,n,m,val,pos,start,finish,ans;
void _Update(int nod, int left, int right)
{
if( left == right )
{
Arb[ nod ] = val;
return;
}
int middle = ( left + right ) / 2;
if( middle >= pos )
_Update( 2 * nod , left , middle );
else
_Update( 2 * nod + 1 , middle + 1 , right );
Arb[ nod ] = max( Arb[ 2 * nod ] , Arb[ 2 * nod + 1 ] );
}
void _Query(int nod, int left, int right)
{
if( left > finish || right < start )
return;
if( left >= start && right <= finish )
{
ans = max( ans , Arb[ nod ] );
return;
}
int middle = ( left + right ) / 2;
_Query( 2 * nod , left , middle );
_Query( 2 * nod + 1 , middle + 1 , right );
}
int main()
{
fin>>n>>m;
for(i=1 ; i<=n ; ++i)
{
fin>>x;
val = x;
pos = i;
_Update( 1 , 1 , n );
}
for(i=1 ; i<=m ; ++i)
{
fin>>q>>x>>y;
if( q == 1 )
{
pos = x;
val = y;
_Update( 1 , 1 , n );
}
else
{
ans = 0;
start = x;
finish = y;
_Query( 1 , 1 , n );
fout<<ans<<'\n';
}
}
return 0;
}