AcWing 242. 一个简单的整数问题
原题链接
简单
作者:
妙WA种子_
,
2020-10-28 11:21:07
,
所有人可见
,
阅读 431
树状数组 区间修改、单点查询
C++ 代码
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N];
int c[N];
int n,m;
void add(int x,int y)
{
for(; x<=n; x+=(x& -x) ) c[x]+=y;
}
int ask(int x)
{
int ans=0;
for(;x;x-=(x&-x)) ans+=c[x];
return ans;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
char op[5];
while(m--)
{
cin>>op;
int A,b,x;
if(op[0]=='C')
{
scanf("%d %d %d",&A,&b,&x);
add(A,x);
add(b+1,-x);
}
else
{
scanf("%d",&A);
cout<<ask(A)+a[A]<<endl;
}
}
return 0;
}