CSES Solutions
#1651Range Queries

Range Update Queries

View on CSES

Solution

1651-Range_Update_Queries.cpp
1#include<bits/stdc++.h>
2using namespace std;
3#define int long long
4constexpr int N=2e5+5;
5int ft[N];
6int sum(int x){
7  int res=0;
8  for(;x>0;x-=(x&-x)) res+=ft[x];
9  return res;
10}
11void upd(int x,int v){ for(;x<N;x+=(x&-x)) ft[x]+=v; }
12signed main(){
13  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
14  int n,q; cin>>n>>q;
15  int x[n]; for(int i=1;i<=n;++i){
16    cin>>x[i];
17    upd(i,x[i]);
18    upd(i+1,-x[i]);
19  }
20  while(q--){
21    int t; cin>>t;
22    if(t==1){
23      int a,b,u; cin>>a>>b>>u;
24      upd(a,u);
25      upd(b+1,-u);
26    }else{
27      int k; cin>>k;
28      cout<<sum(k)<<'\n';
29    }
30  }
31  return 0;
32}

Editorial not yet generated for this problem. Run the editorial generation script to add hints and detailed explanations.