Pagini recente » Cod sursa (job #1849506) | Cod sursa (job #2846042) | Cod sursa (job #48301) | Cod sursa (job #1797708) | Cod sursa (job #1788730)
#include <fstream>
using namespace std;
#define dim 100001
int N, M;
int Arb[4*dim];
int l, r, Val, Pos;
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 (l <= st && dr <= r) return Arb[nod];
int a=0,b=0,mid=(st+dr)/2;
if (l <= mid) a=Query(2*nod,st,mid);
if (r > 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) Update(1,1,N);
else cout << Query(1,1,N) << '\n';
}
}