Pagini recente » Cod sursa (job #1527944) | Cod sursa (job #1922984) | Cod sursa (job #3179944) | Cod sursa (job #1914524) | Cod sursa (job #2146208)
#include <fstream>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int a[300005],n,m, val, left1, right1;
void update( int nod, int st, int dr, int pos )
{
if( st == dr )
{
a[nod] = val;
return;
}
int mid = ( st + dr ) /2;
if( pos <= mid ) update( nod*2,st,mid,pos); else
update( nod*2+1, mid+1, dr, pos);
a[nod] = max( a[2*nod], a[2*nod+1]);
}
void qwery( int nod, int st, int dr)
{
if( st >= left1 && dr <= right1 )
{
val = max( val,a[nod]);
return;
}
int mid = ( st + dr )/2;
if( left1 <= mid ) qwery(nod*2,st,mid);
if( right1 > mid ) qwery( nod*2+1, mid+1,dr);
}
int main()
{
in >> n >> m;
int x;
for(int i=1; i<=n; i++)
{
in >> x;
val = x;
update(1,1,n,i);
}
int qw,y;
for(int i=1; i<=m; i++)
{
in >> qw;
if( qw == 1 )
{
in >> x >> y;
val = y;
update( 1,1,n,x);
}
else
{
in >> x >> y;
val = -1;
left1 = x;
right1 = y;
qwery( 1,1,n);
out << val << '\n';
}
}
return 0;
}