fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define fastio() ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  5. #define all(x) (x).begin(), (x).end()
  6. #define rall(x) (x).rbegin(), (x).rend()
  7. #define pb push_back
  8. #define mp make_pair
  9. #define el '\n'
  10. #define int long long
  11. #define fi first
  12. #define se second
  13. #define sz(x) ((int)(x).size())
  14. #define file(name) if (fopen (name".inp", "r")) { freopen (name".inp", "r", stdin); freopen (name".out", "w", stdout); }
  15.  
  16. using ll = long long;
  17. using ull = unsigned long long;
  18. using ld = long double;
  19. using pii = pair<int, int>;
  20. using vi = vector<int>;
  21. using vll = vector<ll>;
  22. using vpii = vector<pii>;
  23.  
  24. const int MOD = 1e9 + 7;
  25. const int INF = 1e9;
  26. const int MAXN = 2e6+7;
  27. const int N = 3;
  28.  
  29. int n,q;
  30. int a[MAXN];
  31. int st[4*MAXN];
  32. int lazy[MAXN];
  33.  
  34. void down(ll id,ll l,ll r){
  35. ll val = lazy[id];
  36. st[id * 2] += val;
  37. lazy[id * 2] += val;
  38. st[id * 2 + 1] += val;
  39. lazy[id * 2 + 1] += val;
  40. lazy[id] = 0;
  41. }
  42. void update(ll id,ll l,ll r,ll u,ll v,ll val){
  43. if (l > v || r < u) return;
  44. if (u <= l && r <= v){
  45. st[id] += val ;
  46. lazy[id] += val;
  47. return;
  48. }
  49. ll mid = l + r >> 1;
  50. if (lazy[id]) down(id, l, r);
  51.  
  52. update(id * 2, l, mid, u, v, val);
  53. update(id * 2 + 1, mid + 1, r, u, v, val);
  54. st[id] = st[id * 2] + st[id * 2 + 1];
  55. }
  56. ll get(ll id,ll l,ll r,ll u,ll v){
  57. if (l > v || r < u) return 0;
  58. if (u <= l && r <= v) return st[id];
  59. if (lazy[id]) down(id,l,r);
  60. ll mid = l + r >> 1;
  61. return get(id * 2, l, mid, u, v) + get(id * 2 + 1, mid + 1, r, u, v);
  62. }
  63. void solve(){
  64. cin >> n ;
  65. cin >> q;
  66. for(int i=1;i<=n;i++) {
  67. cin >> a[i];
  68. update(1,1,n,i,i,a[i]);
  69. }
  70. while(q--){
  71. int o;cin >> o;
  72. if(o==1){
  73. int l,r,v;cin >> l >> r >> v;
  74. update(1,1,n,l,r,v);
  75. }
  76. else{
  77. int k;cin >> k;
  78. cout << get(1,1,n,k,k) << el;
  79. }
  80. }
  81. }
  82.  
  83. main() {
  84. fastio();
  85. int t = 1;
  86. // cin >> t;
  87. while (t--) solve();
  88. return 0;
  89. }
  90.  
Success #stdin #stdout 0.01s 5292KB
stdin
Standard input is empty
stdout
Standard output is empty