Pagini recente » Cod sursa (job #2478594) | Cod sursa (job #417505) | Cod sursa (job #1494755) | Cod sursa (job #510634) | Cod sursa (job #2734127)
#include<fstream>
using namespace std;
ifstream cin("arbint.in");
ofstream cout("arbint.out");
const int N = 4e5 + 7;
int arb[N], n, q, o, x, y, maxim;
void update (int nod, int st, int dr) {
if (st == dr) {
arb[nod] = y;
return;
}
int mij = (st + dr) / 2;
if (x <= mij)
update(2 * nod, st, mij);
else
update(2 * nod + 1, mij + 1, dr);
arb[nod] = max(arb[2 * nod], arb[2 * nod + 1]);
}
void query(int nod, int st, int dr) {
if (st >= x && dr <= y) {
maxim = max(maxim, arb[nod]);
return;
}
int mij = (st + dr) / 2;
if (x <= mij)
query(2 * nod, st, mij);
if (y > mij)
query(2 * nod + 1, mij + 1, dr);
}
int main() {
cin >> n >> q;
for (x = 1; x <= n; x++) {
cin >> y;
update(1, 1, n);
}
while (q--) {
cin >> o >> x >> y;
if (o)
update(1, 1, n);
else {
maxim = 0;
query(1, 1, n);
cout << maxim << "\n";
}
}
}