记录编号 228675 评测结果 AAAAAAAAA
题目名称 数列操作B 最终得分 100
用户昵称 GravatarHzoi_Go灬Fire 是否通过 通过
代码语言 C++ 运行时间 0.222 s
提交时间 2016-02-19 14:33:40 内存使用 1.43 MiB
显示代码纯文本
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const long long maxn=100009;
long long n,a[maxn]={0},c[maxn]={0};
void Init();
void Update(long long,long long);
long long Lowbit(long long);
long long Get_max(long long);
int main(){
freopen("shulieb.in","r",stdin);
	freopen("shulieb.out","w",stdout);
	Init();
	return 0;
}
void Init(){
	long long m;
	scanf("%lld",&n);
	for(long long i=1;i<=n;i++)
	{
		scanf("%lld",&a[i]);
	}

	scanf("%lld",&m);
	for(long long i=1;i<=m;i++){
		char s[10];
		long long x;
		long long l,r,y;
		scanf("%s",s);
		if(s[0]=='Q')
		{
			cin>>x;
			printf("%lld\n",a[x]+Get_max(x));
		}
		if(s[0]=='A')
		{
			scanf("%lld%lld%lld",&l,&r,&y);
			Update(l,y);
			Update(r+1,-y);
		}
	}
}
long long Lowbit(long long x)
{
	return x&-x;
}
void Update(long long x,long long y)
{
	for(long long i=x;i<=n;i+=Lowbit(i))
	{
		c[i]+=y;
	}
}
long long Get_max(long long x)
{
	long long tot=0;
	for(long long i=x;i>0;i-=Lowbit(i))
	{
		tot+=c[i];
	}
	return tot;
}