Pagini recente » Cod sursa (job #129361) | Cod sursa (job #1521213) | Cod sursa (job #1038015) | Cod sursa (job #2289410) | Cod sursa (job #1325028)
#include <fstream>
#define MAX 100001
using namespace std;
ifstream is("arbint.in");
ofstream os("arbint.out");
int arb[4*MAX];
int n, m, a, b, op, mx;
void Update( int nod, int st, int dr )
{
if ( st == dr )
{
arb[nod] = b;
return;
}
int mid = (st+dr)/2;
if ( a <= mid )
Update(2*nod, st, mid );
else
Update(2*nod+1, mid+1, dr );
arb[nod] = max ( arb[2*nod], arb[2*nod+1] );
}
void Query( int nod, int st, int dr )
{
if ( a <= st && dr <= b )
{
mx = max ( mx, arb[nod] );
return;
}
int mid = (st+dr)/2;
if ( a <= mid )
Query( 2*nod, st, mid );
if ( b > mid )
Query( 2*nod+1, mid+1, dr );
}
int main()
{
is >> n >> m;
for ( int i = 1; i <= n; ++i )
{
is >> b;
a = i;
Update(1, 1, n);
}
while( m-- )
{
is >> op >> a >> b;
if ( op )
Update(1, 1, n);
else
{
mx = 0;
Query(1, 1, n);
os << mx << '\n';
}
}
is.close();
os.close();
return 0;
}