#include<bits/stdc++.h>
using namespace std;
#define x first
#define y second
typedef pair<int,int> PII;
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int uint;
typedef vector<string> VS;
typedef vector<int> VI;
typedef vector<vector<int>> VVI;
const int N = 500010;
ll c[N];
int n,m;
inline int lowbit(int x) {return x&-x;}
inline void update(int x,int d) {while(x<=n){c[x] += d, x += lowbit(x);}}
inline ll sum(int x) {ll res = 0;while(x){res += c[x], x -= lowbit(x);}return res;}
void solve()
{
cin>>n>>m;
for(int i=1;i<=n;++i)
{
int a;
cin>>a;
update(i,a);
update(i+1,-a);
}
for(int i=0;i<m;++i)
{
int op,x,y,d;
cin>>op;
if(op&1)
{
cin>>x>>y>>d;
update(x,d);
update(y+1,-d);
}
else
{
cin>>x;
cout<<sum(x)<<'\n';
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int T = 1;
//cin>>T;
while(T--)
{
solve();
}
}
标签:typedef,树状,int,ll,update,long,vector,P3368,模板
From: https://www.cnblogs.com/ruoye123456/p/18440080