Pagini recente » Cod sursa (job #2823932) | Cod sursa (job #2193480) | Cod sursa (job #121033) | Cod sursa (job #3036957) | Cod sursa (job #1937557)
#include <fstream>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
const int nmax= 100000;
const int pmax= 262144;
int arb[pmax+1];
void arb_upd( int x, int y ) {
arb[x]= y;
for ( x/= 2; x>0; x/= 2 ) {
arb[x]= max(arb[x*2], arb[x*2+1]);
}
}
int arb_query( int x, int l, int r, int a, int b ) {
if ( r<a || b<l )
return 0;
if ( a<=l && r<=b ) {
return arb[x];
}
return max(arb_query(x*2, l, (l+r)/2, a, b), arb_query(x*2+1, (l+r)/2+1, r, a, b));
}
int main( ) {
int n, m, n2;
fin>>n>>m;
for ( n2= 1; n2<n; n2*= 2 ) ;
for ( int i= 1, x; i<=n; ++i ) {
fin>>x;
arb_upd(i-1+n2, x);
}
for ( int i= 1, x, y, z; i<=m; ++i ) {
fin>>z>>x>>y;
if ( z==0 ) {
fout<<arb_query(1, 1, n2, x, y)<<"\n";
} else {
arb_upd(n2-1+x, y);
}
}
return 0;
}