输入样例:
10 5
1 2 3 4 5 6 7 8 9 10
Q 4
Q 1
Q 2
C 1 6 3
Q 2
输出样例:
4
1
2
5
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,m,a[N],c[N],x,y,d;
char ch;
int lowbit(int x){
return x&-x;
}
void add(int x,int k){
for(int i=x;i<=n;i+=lowbit(i)) c[i]+=k;
}
int sum(int x){
int ans=0;
for(int i=x;i;i-=lowbit(i)) ans+=c[i];
return ans;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
add(i,a[i]-a[i-1]);
}
while(m--){
cin>>ch;
if(ch=='Q'){
scanf("%d",&x);
cout<<sum(x)<<endl;
}
else{
scanf("%d%d%d",&x,&y,&d);
add(x,d);
add(y+1,-d);
}
}
return 0;
}