Pagini recente » Cod sursa (job #254952) | Cod sursa (job #120711) | Cod sursa (job #1297367) | Cod sursa (job #1657885) | Cod sursa (job #2711979)
#include <stdio.h>
#include <algorithm>
#define max(a, b) (a > b ? a : b)
using namespace std;
const int MAX_NUMBER = 123456;
int segmentTree[MAX_NUMBER];
void update(int node, int left, int right, int first, int last, int value) {
if (left == right) {
segmentTree[node] = value;
}
int mid = (left + right) / 2;
if (first <= mid) {
update(2 * node, left, mid, first, last, value);
} else {
update(2 * node + 1, mid + 1, right, first, last, value);
}
segmentTree[node] = max(segmentTree[2 * node], segmentTree[2 * node + 1]);
}
void query(int node, int left, int right, int first, int last, int &ans) {
if (first <= left && right <= last) {
ans = max(ans, segmentTree[node]);
return;
}
int mid = (left + right) / 2;
if (first <= mid) {
update(2 * node, left, mid, first, last, ans);
}
if (mid < last) {
update(2 * node + 1, mid + 1, right, first, last, ans);
}
}
int main() {
// Get some queries
}