记录编号 |
125644 |
评测结果 |
AAAAAAAAA |
题目名称 |
数列操作B |
最终得分 |
100 |
用户昵称 |
乌龙猹 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.095 s |
提交时间 |
2014-10-09 19:08:17 |
内存使用 |
0.67 MiB |
显示代码纯文本
#include<cstdio>
using namespace std;
int n,m;
int C[100001];
char s[4];
int Lowbit(int x)
{
return x & -x;
}
void Add(int i,int x)
{
while(i<=n)
{
C[i]+=x;
i+=Lowbit(i);
}
}
void aDD(int l,int r,int add)
{
int p=l;
while(p<=n)
{
C[p]+=add;
p+=Lowbit(p);
}
p=r+1;
while(p<=n)
{
C[p]-=add;
p+=Lowbit(p);
}
}
int PR(int k)
{
int Sum=0;
while(k)
{
Sum+=C[k];
k-=Lowbit(k);
}
return Sum;
}
int main()
{
freopen("shulieb.in","r",stdin);
freopen("shulieb.out","w",stdout);
scanf("%d",&n);
int x=0,y=0,z;
for(int i=1;i<=n;i++)
{
scanf("%d",&y);
z=y-x;
x=y;
Add(i,z);
}
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
int a,b,kk;
scanf("%s",s);
if(s[0]=='Q')
{
scanf("%d",&a);
printf("%d\n",PR(a));
continue;
}
scanf("%d%d%d",&a,&b,&kk);
aDD(a,b,kk);
}
return 0;
}