Pagini recente » Cod sursa (job #2917354) | Cod sursa (job #68420) | Cod sursa (job #1971973) | Cod sursa (job #67475) | Cod sursa (job #2243158)
#include <bits/stdc++.h>
#define dimn 100005
// Am dat reupload ca aparea cu 0 pct in arhiva si ma facea trist
std::ifstream f("arbint.in");
std::ofstream g("arbint.out");
int N, Q;
int tree[4*dimn+50];
void update(int pos, int value, int nod=1, int left=1, int right=N) {
int mij = (left+right)/2;
if (left == right) {
tree[nod] = value;
return;
}
if (pos <= mij) update(pos, value, 2*nod, left, mij);
else update(pos, value, 2*nod+1, mij+1, right);
tree[nod] = std::max(tree[2*nod], tree[2*nod+1]);
}
int max_interval(int s, int d, int nod=1, int left=1, int right=N) {
if(s<=left && right<=d)
return tree[nod];
int mij = (left+right)/2, max = 0;
if(s<=mij) max = std::max(max, max_interval(s, d, 2*nod, left, mij));
if(mij<d) max = std::max(max, max_interval(s, d, 2*nod+1, mij+1, right));
return max;
}
void citire() {
f >> N >> Q;
for (int i=0, x; i<N; i++) {
f >> x;
update(i+1, x);
}
}
void rezolvare() {
for (int i=0, t, y, x; i<Q; i++) {
f >> t >> y >> x;
if(t==0) g << max_interval(y, x) << "\n";
else update(y, x);
}
}
int main()
{
citire();
rezolvare();
return 0;
}