Advertisement
MaxObznyi

A

Jun 25th, 2022
890
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include <iostream>
  2. #define int long long
  3. using namespace std;
  4.  
  5. const int N = 2e5 + 5;
  6.  
  7.  
  8. int n, q, a[N];
  9. int t[4*N];
  10.  
  11. void build(int v, int vl, int vr) {
  12.     if (vl == vr) {
  13.         t[v] = a[vl];
  14.         return;
  15.     }
  16.     int vm = (vl + vr) / 2;
  17.     build(2 * v, vl, vm);
  18.     build(2 * v + 1, vm + 1, vr);
  19.  
  20.     ///t[v] = 0;
  21. }
  22.  
  23. int get(int v, int vl, int vr, int pos) {
  24.     if (vl == vr) {
  25.         ///vl == vr == pos
  26.         return t[v];
  27.     }
  28.     int vm = (vl + vr) / 2;
  29.     if (pos <= vm)
  30.         return get(2 * v, vl, vm, pos) + t[v];
  31.     else
  32.         return get(2 * v + 1, vm + 1, vr, pos) + t[v];
  33. }
  34.  
  35. void update(int v, int vl, int vr, int l, int r, int x) {
  36.     if (vl == l && vr == r) {
  37.         t[v] += x;
  38.         return;
  39.     }
  40.     int vm = (vl + vr) / 2;
  41.     if (r <= vm)
  42.         update(2 * v, vl, vm, l, r, x);
  43.     else if (l > vm)
  44.         update(2 * v + 1, vm + 1, vr, l, r, x);
  45.     else {
  46.         update(2 * v, vl, vm, l, vm, x);
  47.         update(2 * v + 1, vm + 1, vr, vm + 1, r, x);
  48.     }
  49. }
  50.  
  51. signed main()
  52. {
  53.     cin >> n >> q;
  54.     for (int i = 1; i <= n; i++)
  55.         cin >> a[i];
  56.     build(1, 1, n);
  57.  
  58.     while (q--) {
  59.         int t;
  60.         cin >> t;
  61.         if (t == 1) {
  62.             int l, r, x;
  63.             cin >> l >> r >> x;
  64.             update(1, 1, n, l, r, x);
  65.         } else {
  66.             int pos;
  67.             cin >> pos;
  68.             cout << get(1, 1, n, pos) << "\n";
  69.         }
  70.     }
  71.  
  72.     return 0;
  73. }
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement