Pagini recente » Cod sursa (job #318115) | Cod sursa (job #1193163) | Cod sursa (job #2542375) | Cod sursa (job #2635083) | Cod sursa (job #949787)
Cod sursa(job #949787)
#include <fstream>
#include <algorithm>
using namespace std;
#define in "arbint.in"
#define out "arbint.out"
#define N 100005
#define AN N*5
int arb[AN], n, m, x, a, b;
void add (int node, int lo, int hi) {
if (lo == hi) {
arb[node] = x;
return;
}
int mid = (lo + hi) >> 1;
if (a <= mid)
add (2 * node, lo, mid);
else
add (2 * node + 1, mid+1, hi);
arb[node] = max (arb[2*node+1], arb[2*node]);
}
void query (int node, int lo, int hi) {
if (a <= lo && hi <= b) {
x = max (arb[node], x);
return ;
}
int mid = (lo + hi) >> 1;
if (a <= mid)
query (2*node, lo, mid);
else
if (mid < b)
query (2*node+1, mid+1, hi);
}
int main () {
ifstream fin (in);
fin >> n >> m;
for (int i = 1; i <= n; ++i) {
fin >> x;
a = i;
add (1, 1, n);
}
ofstream fout (out);
for (int i = 0; i < m; ++i) {
bool code;
fin >> code;
if (code) {
fin >> a >> x;
add (1, 1, n);
}
else {
x = -1;
fin >> a >> b;
query (1, 1, n);
fout << x << "\n";
}
}
fcloseall();
return 0;
}