Pagini recente » Cod sursa (job #1831197) | Cod sursa (job #571076) | Cod sursa (job #2196489) | Cod sursa (job #1957933) | Cod sursa (job #2932028)
#include <bits/stdc++.h>
using namespace std;
int const nmax = 100000;
int const inf = 1e9;
int n , m;
int p , v;
int l , r;
int T[4 * nmax + 5] , A[nmax + 5];
void build(int i,int j,int k){
if(i != j){
build(i , (i + j) / 2,2 * k);
build((i + j) / 2 + 1 , j,2 * k + 1);
T[k] = max(T[2 * k],T[2 * k + 1]);
}else
T[k] = A[i];
}
void update(int i,int j,int k){
if(i != j){
int mid = (i + j) / 2;
if(p <= mid)
update(i , mid , 2 * k);
else update(mid + 1,j , 2 * k + 1);
T[k] = max(T[2 * k], T[2 * k + 1]);
}else
T[k] = v;
}
int query(int i,int j,int k){
if(i > r || j < l)return -inf;
if(l <= i && j <= r)return T[k];
return max(query(i , (i + j) / 2, 2 * k) , query((i + j) / 2 + 1 , j, 2 * k + 1));
}
int main()
{
freopen("arbint.in" , "r" , stdin);
freopen("arbint.out" , "w" ,stdout);
cin.tie(0)->sync_with_stdio(0);
cin.exceptions(cin.failbit);
cin >> n >> m;
for(int i = 1;i <= n; ++i)cin >> A[i];
build(1,n,1);
for(int i = 1;i <= m; ++i){
int op;
cin >> op;
if(op == 0){
cin >> l >> r;
cout << query(1 , n , 1) << "\n";
}else{
cin >> p >> v;
update(1,n,1);
}
}
}