Advertisement
arujbansal

Untitled

Jan 27th, 2021
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.68 KB | None | 0 0
  1. int N, M;
  2. int tree[4 * MXN], lazy[4 * MXN];
  3.  
  4. int merge(int x, int y) { return max(x, y); }
  5.  
  6. void push(int i, int l, int r) {
  7.     if (lazy[i] == 0) return;
  8.  
  9.     tree[i] += (r - l + 1) * lazy[i];
  10.     if (l != r) {
  11.         lazy[2 * i] += lazy[i];
  12.         lazy[2 * i + 1] += lazy[i];
  13.     }
  14.     lazy[i] = 0;
  15. }
  16.  
  17. void modify(int i, int l, int r, int ql, int qr, int val) {
  18.     if (l > qr || r < ql) return;
  19.     push(i, l, r);
  20.     if (l >= ql && r <= qr) {
  21.         lazy[i] += val;
  22.         push(i, l, r);
  23.     }
  24.  
  25.     int mid = (l + r) >> 1;
  26.     modify(2 * i, l, mid, ql, qr, val);
  27.     modify(2 * i + 1, mid + 1, r, ql, qr, val);
  28.  
  29.     tree[i] = merge(tree[2 * i], tree[2 * i + 1]);
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement