Pagini recente » Cod sursa (job #2640822) | Cod sursa (job #2734350) | Cod sursa (job #1803215) | Cod sursa (job #2979471) | Cod sursa (job #2167782)
#include <bits/stdc++.h>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int a[400005],n,m,val,lef,rig;
void update( int nod, int st, int dr, int poz )
{
if( st == dr )
{
a[nod] = val;
return;
}
int mid = ( st + dr ) /2;
if( poz <= mid ) update( 2*nod, st, mid, poz);
else update( 2*nod+1, mid+1,dr,poz );
a[nod] = max( a[2*nod], a[2*nod+1]);
}
void qwery( int nod, int st, int dr )
{
if( lef <= st && rig >= dr )
{
val = max( val, a[nod]);
return;
}
int mid = ( st+dr ) /2;
if( lef <= mid ) qwery( 2*nod, st, mid);
if( rig > mid ) qwery( 2*nod+1, mid+1, dr);
}
int main()
{
ios::sync_with_stdio(0);
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;
lef = x; rig=y;
val = -1;
qwery(1,1,n);
out << val << '\n';
}
}
return 0;
}