单点查询 区间修改
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m;
int tr[N<<2],a[N];
int lowbit(int x)
{
return x&-x;
}
void update(int u,int v)
{
for(int i=u;i<=n;i+=lowbit(i))
tr[i]+=v;
}
int query(int u)
{
int sum=0;
for(int i=u;i;i-=lowbit(i))
sum+=tr[i];
return sum;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
update(i,a[i]-a[i-1]);
}
while(m--)
{
char op[2];
cin>>op;
if(op[0]=='Q')
{
int u;
cin>>u;
cout<<query(u)<<endl;
}
else
{
int l,r,x;
cin>>l>>r>>x;
update(l,x),update(r+1,-x);
}
}
return 0;
}