Pagini recente » Cod sursa (job #1065564) | Cod sursa (job #1511041) | Cod sursa (job #2008910) | Cod sursa (job #1059870) | Cod sursa (job #1869302)
#include<bits/stdc++.h>
#define in f
#define out g
using namespace std;
ifstream f ("arbint.in");
ofstream g ("arbint.out");
int const maxsize = 10000000;
int n, m, code, a, b;
int v[maxsize];
int h[100000];
int main() {
in >> n >> m;
int s = sqrt(n);
for (int i = 1; i <= n; i++) {
in >> v[i];
h[i / s] = max(h[i / s], v[i]);
}
for (int i = 1; i <= m; i++) {
in >> code >> a >> b;
if (code == 0) {
int maxx = 0;
for (int j = a; j <= b; j++) {
if (j % s == 0 && j + s <= b) {
maxx = max(maxx, h[j / s]);
j += (s - 1);
} else
maxx = max(maxx, v[j]);
}
out << maxx << endl;
} else {
if (v[a] == h[a / s] && v[a] > b) {
v[a] = b;
h[a / s] = 0;
if(a < s) {
for(int j = a - a % s + 1; j < a / s + s; j++)
h[a / s] = max(h[a / s], v[j]);
} else {
for(int j = a - a % s; j < a / s + s; j++)
h[a / s] = max(h[a / s], v[j]);
}
} else {
h[a / s] = max(h[a / s], b);
v[a] = b;
}
}
}
return 0;
}