Pagini recente » Cod sursa (job #2443826) | Cod sursa (job #240963) | Cod sursa (job #2361561) | Cod sursa (job #1586130) | Cod sursa (job #2667943)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
const int nMax = 1e5 + 5;
int n, m, val, pos, t, a, b, mx;
int arb[2 * nMax];
void update(int nod, int left, int right){
if(left == right){
arb[nod] = val;
return;
}
int mid = (left + right) / 2;
if(pos <= mid)
update(2 * nod, left, mid);
else
update(2 * nod + 1, mid + 1, right);
arb[nod] = max(arb[2 * nod], arb[2 * nod + 1]);
}
void query(int nod, int left, int right){
if(a <= left && right <= b){
mx = max(mx, arb[nod]);
return;
}
int mid = (left + right) / 2;
if(a <= mid)
query(2 * nod, left, mid);
if(b > mid)
query(2 * nod + 1, mid + 1, right);
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; i++){
fin >> val;
pos = i;
update(1, 1, n);
}
for(int i = 1; i <= m; i++){
fin >> t >> a >> b;
if(!t){
mx = 0;
query(1, 1, n);
fout << mx << "\n";
} else {
pos = a, val = b;
update(1, 1, n);
}
}
return 0;
}