Advertisement
bero_0401

segement tree

Jul 18th, 2024
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | Source Code | 0 0
  1. #include "bits/stdc++.h"
  2. using namespace std;
  3. #define ll long long
  4.  
  5. const int N = 2e5+5;
  6. const int LOG = 18;
  7.  
  8.  
  9. ll T[200005];
  10. int n;
  11.  
  12.  
  13. void update(ll x , ll val) {
  14.  
  15.     while (x <= n) {
  16.         T[x] += val;
  17.         x += x & (-x);
  18.     }
  19. }
  20. ll sum(ll x) {
  21.     ll sum = 0;
  22.  
  23.     while (x) {
  24.         sum += T[x];
  25.         x -= x & (-x);
  26.     }
  27.     return sum;
  28. }
  29.  
  30. void solve() {
  31.  
  32.     int q;
  33.     cin >> n >> q;
  34.     vector <ll> v(n + 1);
  35.     vector <ll> diff(n+1);
  36.     memset(T , 0 , sizeof(T) );
  37.     for(int i = 1; i<= n;i++) {
  38.         cin >> v[i];
  39.         diff[i] = v[i] - v[i-1];
  40.         update(i , diff[i]);
  41.     }
  42.  
  43.  
  44.     while(q--)
  45.     {
  46.         int x; cin>>x;
  47.  
  48.         if(x == 1)
  49.         {
  50.             ll l , r , u; cin>>l>>r>>u;
  51.             update(l , u);
  52.             update(r+1 , -u);
  53.  
  54.  
  55.         }
  56.         else
  57.         {
  58.             int k; cin>>k;
  59.             cout<<sum(k)<<"\n";
  60.  
  61.         }
  62.     }
  63. }
  64.  
  65.  
  66. int main()
  67. {
  68.     ios::sync_with_stdio(0);cin.tie(0);    cout.tie(0);
  69.     int tc = 1;
  70.  
  71.     //cin>>tc;
  72.  
  73.     while(tc--)
  74.     {
  75.         solve();
  76.     }
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement