Pagini recente » Cod sursa (job #2731895) | Cod sursa (job #1783637) | Cod sursa (job #2416761) | Cod sursa (job #1583715) | Cod sursa (job #2787993)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t[400005], lazy[400005], n,m;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
ll query(ll l, ll r, ll node = 1, ll a = 0, ll b = n-1) {
if(a > r || b < l) return -1;
if(a >= l && r >= b) return t[node];
ll mid = a + ((b - a) >> 1);
ll maxL = query(l, r, node << 1, a, mid);
ll maxR = query(l, r, (node << 1) | 1, mid+1, b);
return max(maxL, maxR);
}
void update(ll p, ll v, ll node = 1, ll a = 0, ll b = n-1) {
if(a > p || b < p) return;
if(a == b) {
t[node] = v;
return;
}
ll mid = a + ((b - a) >> 1);
update(p, v, node << 1, a, mid);
update(p, v, (node << 1) | 1, mid+1, b);
t[node] = max(t[node << 1], t[(node << 1) | 1]);
}
void solve() {
fin >> n >> m;
for(ll i = 0; i < n; i++) {
ll x;
fin >> x;
update(i, x);
}
while(m--) {
ll t, a, b;
fin >> t >> a >> b;
a--;
if(t == 0) {
b--;
fout << query(a, b) << '\n';
} else {
update(a, b);
}
}
}
int main() {
// ios_base::sync_with_stdio(0);
// fin.tie(NULL);
// fout.tie(NULL);
ll t = 1;
//fin >> t;
while(t--) {
solve();
}
}