Pagini recente » Cod sursa (job #1395458) | Cod sursa (job #367268) | Cod sursa (job #350959) | Cod sursa (job #1486097) | Cod sursa (job #3302494)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5;
const int BMAX = 320;
int a[NMAX + 1], b[BMAX + 1];
int main() {
ifstream cin("arbint.in");
ofstream cout("arbint.out");
int n, m;
cin >> n >> m;
int szb = sqrt(n);
for(int i = 1; i <= n; i++) {
cin >> a[i];
int idb = (i - 1) / szb + 1;
b[idb] = max(b[idb], a[i]);
}
while(m--) {
int op, x, y;
cin >> op >> x >> y;
if(op == 1) {
a[x] = y;
int idb = (x - 1) / szb + 1;
b[idb] = 0;
for(int i = (idb - 1) * szb + 1; i <= idb * szb; i++) {
b[idb] = max(b[idb], a[i]);
}
} else {
int sol = 0;
while(x <= y) {
if((x - 1) % szb == 0) {
if(x + szb - 1 <= y) {
int idb = (x - 1) / szb + 1;
sol = max(sol, b[idb]);
x += szb;
} else {
sol = max(sol, a[x]);
x++;
}
} else {
sol = max(sol, a[x]);
x++;
}
}
cout << sol << '\n';
}
}
return 0;
}