Untitled
By: a guest | Mar 22nd, 2010 | Syntax:
C++ | Size: 0.53 KB | Hits: 42 | Expires: Never
int update(int node, int b, int e, int idx, int val) {
if (b > idx || e < idx)
return tree[node];
if (b == idx)
return tree[node] = val;
int mid = (b + e) / 2, nxt = node * 2 + 1;
return tree[node] = max(update(nxt, b, mid, idx, val), update(nxt + 1, mid + 1, e, idx, val));
}
int query(int node, int b, int e, int i, int j) {
if (b > j || e < i)
return 0;
if (b >= i && e <= j)
return tree[node];
int mid = (b + e) / 2, nxt = node * 2 + 1;
return max(query(nxt, b, mid, i, j), query(nxt + 1, mid + 1, e, i, j));
}