fork(3) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int maxN = 100224;
  5.  
  6. struct BIT {
  7. int data[maxN];
  8. void update(int idx, int val) {
  9. while (idx < maxN) {
  10. data[idx] += val;
  11. idx += idx & -idx;
  12. }
  13. }
  14. void update(int l, int r, int val) {
  15. update(l, val);
  16. update(r + 1, -val);
  17. }
  18. int query(int idx) {
  19. int res = 0;
  20. while (idx > 0) {
  21. res += data[idx];
  22. idx -= idx & -idx;
  23. }
  24. return res;
  25. }
  26. int query(int l, int r) {
  27. return query(r) - query(l);
  28. }
  29. };
  30.  
  31. struct LazyBIT {
  32. BIT bitAdd, bitSub;
  33. void update(int l, int r, int val) {
  34. bitAdd.update(l, r, val);
  35. bitSub.update(l, r, (l - 1) * val);
  36. bitSub.update(r + 1, (-r + l - 1) * val);
  37. }
  38. int query(int idx) {
  39. return idx * bitAdd.query(idx) - bitSub.query(idx);
  40. }
  41. int query(int l, int r) {
  42. return query(r) - query(l - 1);
  43. }
  44. };
  45.  
  46. int main() {
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0s 3336KB
stdin
Standard input is empty
stdout
Standard output is empty