记录编号 |
390659 |
评测结果 |
AAAAAAAAA |
题目名称 |
数列操作B |
最终得分 |
100 |
用户昵称 |
TARDIS |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.036 s |
提交时间 |
2017-04-03 17:22:24 |
内存使用 |
0.39 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<stack>
#include<queue>
#include<cstring>
#include<deque>
#define itn int
#define coder goodboy
using namespace std;
typedef long long LL;typedef unsigned long long ULL;
const int maxn=100010;
int n,m,c[maxn];
inline int low_bit(int x){
return x&(-x);
}
inline void Add(int i,int x){
while (i<=n){
c[i]+=x;
i+=low_bit(i);
}
}
inline void add(int l,int r,int x){
int p=l;
while (p<=n){
c[p]+=x;
p+=low_bit(p);
}
p=r+1;
while (p<=n){
c[p]-=x;
p+=low_bit(p);
}
}
inline int query(int k){
int sum=0;
while (k){
sum+=c[k];
k-=low_bit(k);
}
return sum;
}
inline void in(){
freopen("shulieb.in","r",stdin);
freopen("shulieb.out","w",stdout);
scanf("%d",&n);
}
inline void work(){
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,temp;char s[5];
scanf("%s",s);
if (s[0]=='A') {
scanf("%d%d%d",&a,&b,&temp);
add(a,b,temp);
}
else {
scanf("%d",&a);
printf("%d\n",query(a));
}
}
}
int Main(){
in();
work();
return 0;
}
int main(){;}
int goodboy=Main();