Pagini recente » Cod sursa (job #1495581) | Cod sursa (job #2853233) | Cod sursa (job #174301) | Cod sursa (job #2348059) | Cod sursa (job #2311982)
#include <fstream>
#define FILE_NAME "arbint"
#define N_MAX 100005
using namespace std;
ifstream in (FILE_NAME".in");
ofstream out (FILE_NAME".out");
int N;
int arb[4 * N_MAX];
int A, B;
int query(int stg, int drp, int nod) {
if (drp < A || B < stg)
return 0;
if (A <= stg && drp <= B)
return arb[nod];
int mij = (stg + drp) / 2;
return max(
query(stg, mij, 2 * nod),
query(mij + 1, drp, 2 * nod + 1)
);
}
void update(int stg, int drp, int nod) {
if (stg == drp) {
arb[nod] = B;
return;
}
int mij = (stg + drp) / 2;
if (stg <= A && A <= mij)
update(stg, mij, 2 * nod);
else
update(mij + 1, drp, 2 * nod + 1);
arb[nod] = max(arb[2 * nod], arb[2 * nod + 1]);
}
int main() {
int m;
in >> N >> m;
for (int i = 1; i <= N; ++i) {
int x;
in >> x;
A = i;
B = x;
update(1, N, 1);
}
while (m--) {
int cod;
in >> cod >> A >> B;
if (!cod)
out << query(1, N, 1) << '\n';
else
update(1, N, 1);
}
}