Pagini recente » Cod sursa (job #283203) | Cod sursa (job #1971102) | Cod sursa (job #794275) | Cod sursa (job #719281) | Cod sursa (job #1788723)
#include <fstream>
using namespace std;
#define dim 100001
int N, M;
int Arb[4*dim];
int l, r, Val, Pos, maxim;
void Update(int nod, int st, int dr)
{
if ( st == dr ){
Arb[nod] = Val;
return;
}
int mid = (st+dr)/2;;
if ( Pos <= mid ) Update(2*nod,st,mid);
else Update(2*nod+1,mid+1,dr);
Arb[nod] = max(Arb[2*nod], Arb[2*nod+1]);
}
int Query(int nod, int st, int dr)
{
if (st <= l && dr >= r) return Arb[nod];
int a=0,b=0,mid=(st+dr)/2;
if (st <= mid) a=Query(2*nod,st,mid);
if (dr > mid) b=Query(2*nod+1,mid+1,dr);
return max(a,b);
}
int main()
{
ifstream cin("arbint.in");
ofstream cout("arbint.out");
cin >> N >> M;
for (Pos=1; Pos <= N; Pos++){
cin >> Val;
Update(1,1,N);
}
for ( int x;M--;){
cin >> x >> l >> r;
Pos = l, Val = r;
if (x) cout << Query(1,1,N) << '\n';
else Update(1,1,N);
}
}