Pagini recente » Cod sursa (job #1648441) | Cod sursa (job #2068250) | Cod sursa (job #1189373) | Cod sursa (job #2770812) | Cod sursa (job #2563860)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int n,m,b[100000],a[400066],qs,qf,val,poz;
void citire()
{
fin>>n>>m;
for ( int i = 1 ; i <= n ; i ++ )
{
fin>>b[ i ];
}
}
void arint(int s , int d , int p)
{
if( s == d )
{
a[ p ] = b[ d ];
return ;
}
int mid;
mid=( d + s ) / 2 ;
arint( s , mid , 2 * p );
arint( mid + 1 , d, 2 * p + 1 );
a[ p ]=max( a[ 2 * p ], a[ 2 * p + 1 ]);
}
int querry( int s , int d , int p )
{
if( qs <= s && d <= qf)
return a[ p ];
if( d < qs || s > qf )
return 0 ;
int mid=( s + d ) / 2;
return max( querry( s , mid , 2 * p ) , querry( mid + 1 , d , 2 * p + 1) );
}
void update( int s , int d , int p )
{
if( s == d )
{
a[p]=val;
return ;
}
int mid= ( s + d ) / 2 ;
if( poz <= mid )
update( s, mid , 2 * p );
else
update( mid + 1 , d , 2 * p + 1 );
a[ p ] = max( a[ 2 * p ] , a[ 2 * p + 1] );
}
int main()
{ citire();
arint( 1 , n , 1 );
int task;
for(int i = 1 ; i <= m ; i++ )
{
fin>>task;
//cout<<task<<" ";
if( task == 1 )
{
fin>>poz>>val;
update( 1 , n , 1 );
}
else
{
fin>>qs>>qf;
fout<<querry( 1 , n , 1 )<<"\n";
}
}
return 0;
}