Pagini recente » Cod sursa (job #2436932) | Cod sursa (job #1510178) | Cod sursa (job #2866697) | Cod sursa (job #2575871) | Cod sursa (job #2196456)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
const int nmax = 100005;
int n, m, i, a[nmax];
int arb[4*nmax], gx, gy, val, maxim, tip;
void update(int cod, int st, int dr) {
if (gx <= st && dr <= gy) {
arb[cod] = val;
return;
}
int mij = (st+dr)/2;
if (gx <= mij)
update(2*cod, st, mij);
if (gy > mij)
update(2*cod+1, mij+1, dr);
arb[cod] = max(arb[2*cod], arb[2*cod+1]);
}
void query(int cod, int st, int dr) {
if (gx <= st && dr <= gy) {
maxim = max(maxim, arb[cod]);
return;
}
int mij = (st+dr)/2;
if (gx <= mij)
query(2*cod, st, mij);
if (gy > mij)
query(2*cod+1, mij+1, dr);
}
int main() {
f >> n >> m;
for (i = 1; i <= n; i++)
f >> a[i];
for (i = 1; i <= n; i++) {
gx = gy = i;
val = a[i];
update(1, 1, n);
}
while (m > 0) {
f >> tip;
if (tip == 0) {
f >> gx >> gy;
maxim = 0;
query(1, 1, n);
g << maxim << '\n';
}
else {
f >> gx >> val;
gy = gx;
update(1, 1, n);
}
m--;
}
return 0;
}