Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.53 KB | None | 0 0
  1. template <class T>
  2. class SegmentTree {
  3. const int n;
  4. vector<T> data;
  5. public:
  6. SegmentTree(const int s) : n(1 << s), data(n * 2, T()) {}
  7. void update(int p, T val) {
  8. data[p += n] = val;
  9. while (p /= 2) {
  10. data[p] = merge(data[p * 2], data[p * 2 + 1]);
  11. }
  12. }
  13. T query(int l, int r) const {
  14. l += n; r += n;
  15. T res1 = T(), res2 = T();
  16. while (l != r) {
  17. if (l % 2) res1 = merge(res1, data[l++]);
  18. if (r % 2) res2 = merge(data[--r], res2);
  19. l /= 2; r /= 2;
  20. }
  21. return merge(res1, res2);
  22. }
  23. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement