Pagini recente » Cod sursa (job #672264) | Cod sursa (job #89964) | Cod sursa (job #2751943) | Cod sursa (job #132676) | Cod sursa (job #1006082)
#include<fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n , m , cap_st , cap_dr , x , op , a , b;
int val , el , st , dr , v_max;
int Arb[300000];
inline int maxim( int a , int b ){
return (a>b)?a:b;
}
void update( int nod , int cap_st , int cap_dr ){
if( cap_st == cap_dr )
Arb[nod] = val;
else{
int mid = (cap_st + cap_dr) / 2;
if( el <= mid )
update( 2*nod , cap_st , mid );
else
update( 2*nod + 1 , mid + 1 , cap_dr );
Arb[nod] = maxim( Arb[2*nod] , Arb[2*nod + 1] );
}
}
void querry( int nod , int cap_st , int cap_dr ){
if( cap_st >= st && cap_dr <= dr )
v_max = maxim( Arb[nod] , v_max );
else{
int mid = ( cap_st + cap_dr ) / 2;
if( mid >= st )
querry( 2*nod , cap_st , mid );
mid++;
if( mid <= dr )
querry( 2*nod + 1 , mid , cap_dr );
}
}
void read(){
f>>n>>m;
cap_st = 1;
cap_dr = n;
for( el = 1 ; el <= n ; el++ ){
f>>val;
update( 1 , cap_st , cap_dr );
}
}
void solve(){
while( (m--) ){
f>>op;
if( op == 0 ){
f>>st>>dr; v_max = 0;
querry(1 , cap_st , cap_dr);
g<<v_max<<"\n";
}
else{
f>>el>>val;
update(1 , cap_st , cap_dr );
}
}
}
int main(){
read();
solve();
return 0;
}