记录编号 |
228457 |
评测结果 |
AAAAAAAAA |
题目名称 |
数列操作B |
最终得分 |
100 |
用户昵称 |
liu_runda |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.137 s |
提交时间 |
2016-02-19 11:17:09 |
内存使用 |
0.82 MiB |
显示代码纯文本
#include<cstdio>
int c[100050];
int ori[100050];int n;
int lowbit(int x){
return x&(-x);
}
void update(int r,int w){
for(int i=r;i<=n;i+=lowbit(i))c[i]+=w;
}
int getsum(int x){
if(x==0)return 0;
int ans=0;
for(int i=x;i;i-=lowbit(i))ans+=c[i];
return ans;
}
int main(){
freopen("shulieb.in","r",stdin);
freopen("shulieb.out","w",stdout);
scanf("%d",&n);
int tmp;
for(int i=1;i<=n;++i){
scanf("%d",&ori[i]);
}
int a,b,c;
int m;scanf("%d",&m);char buf[10];
while(m--){
scanf("%s%d",buf,&a);
if(buf[0]=='Q')printf("%d\n",getsum(a)+ori[a]);
else{
scanf("%d %d",&b,&c);
update(a,c);
update(b+1,-c);
}
}
fclose(stdin);fclose(stdout);
return 0;
}