Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Mar 22nd, 2010 | Syntax: C++ | Size: 0.53 KB | Hits: 42 | Expires: Never
Copy text to clipboard
  1. int update(int node, int b, int e, int idx, int val) {
  2.         if (b > idx || e < idx)
  3.                 return tree[node];
  4.         if (b == idx)
  5.                 return tree[node] = val;
  6.         int mid = (b + e) / 2, nxt = node * 2 + 1;
  7.         return tree[node] = max(update(nxt, b, mid, idx, val), update(nxt + 1, mid + 1, e, idx, val));
  8. }
  9.  
  10. int query(int node, int b, int e, int i, int j) {
  11.         if (b > j || e < i)
  12.                 return 0;
  13.         if (b >= i && e <= j)
  14.                 return tree[node];
  15.         int mid = (b + e) / 2, nxt = node * 2 + 1;
  16.         return max(query(nxt, b, mid, i, j), query(nxt + 1, mid + 1, e, i, j));
  17. }