Pagini recente » Cod sursa (job #2964782) | Cod sursa (job #898158) | Cod sursa (job #875829) | Cod sursa (job #178554) | Cod sursa (job #2132685)
#include <bits/stdc++.h>
using namespace std;
int H[300000], n, m, a, b, o;
void update(int nod, int st, int dr){
if (st == dr){
H[nod] = b;
return;
}
int mid = (st + dr)/2;
if (a <= mid) update(2*nod, st, mid);
else update(2*nod + 1, mid + 1, dr);
H[nod] = max(H[2*nod], H[2*nod + 1]);
}
int query(int nod, int st, int dr){
if (a <= st && b >= dr) return H[nod];
int mid = (st + dr)/2, left = 0, right = 0;
if (a <= mid) left = query(2*nod, st, mid);
if (b > mid) right = query(2*nod + 1, mid + 1, dr);
return max(left, right);
}
int main(){
ifstream cin ("arbint.in");
ofstream cout ("arbint.out");
cin >> n >> m;
for (int i=1; i<=n; i++){
cin >> b;
a = i;
update(1,1,n);
}
while (m--){
cin >> o >> a >> b;
if (!o) cout << query(1,1,n) << "\n";
else update(1,1,n);
}
return 0;
}