Pagini recente » Cod sursa (job #1308004) | Cod sursa (job #1646322) | Cod sursa (job #2196709) | Cod sursa (job #642028) | Cod sursa (job #2144888)
#include <fstream>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int a[100005],n,m;
int pos,l,r,val;
void update( int nod, int st, int dr )
{
if( st == dr )
{
a[nod] = val;
return;
}
int mid = ( st + dr ) /2;
if( pos <= mid ) update( nod*2,st,mid ); else update( nod*2 +1, mid+1,dr);
a[nod] = max( a[nod*2], a[nod*2+1]);
}
void qwery( int nod, int st, int dr )
{
if( st >= l && r >= dr )
{
val = max(val,a[nod]);
return;
}
int mid = ( st + dr ) /2;
if( l <= mid ) qwery(nod*2,st,mid);
if( r > 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;
pos = i;
update(1,1,n);
}
int qw,y;
for(int i=1; i<=m; i++)
{
in >> qw >> x >> y;
if( qw == 1)
{
val = y;
pos = x;
update(1,1,n);
} else
{
l = x;
r = y;
val = -1;
qwery( 1,1,n);
out << val << '\n';
}
}
return 0;
}