记录编号 228755 评测结果 AAAAAAAAA
题目名称 数列操作B 最终得分 100
用户昵称 Gravatar水墨青花 是否通过 通过
代码语言 C++ 运行时间 0.122 s
提交时间 2016-02-19 15:59:27 内存使用 0.95 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>

using namespace std;

int a[100001];
int c[100001];
int n;


int Getsum(int);
int Lowbit(int);
void Update(int,int);



int main()
{
	freopen("shulieb.in","r",stdin);
	freopen("shulieb.out","w",stdout);
	
	memset(a,0,sizeof(a));
	memset(c,0,sizeof(c));
	
	int m;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}

	scanf("%d",&m);	
	for(int i=1;i<=m;i++)
	{
	//	cout<<"for";
		char st[10];
		int res;
		int s,t,y;
		
		scanf("%s",st);
		
		if(st[0]=='A')
		{//cout<<"aaa";
			scanf("%d%d%d",&s,&t,&y);
			Update(s,y);
			Update(t+1,-y);

		}
		if(st[0]=='Q')
		{//cout<<"qqq";
			
			scanf("%d",&res);
			printf("%d\n",a[res]+Getsum(res));	
		}
	}
	return 0;
}


int Lowbit(int x)
{
	return x&-x;
}

void Update(int x,int y)
{
	for(int i=x;i<=n;i+=Lowbit(i))
	{
		c[i]+=y;
	}
}

int Getsum(int x)
{
	int total=0;
	for(int i=x;i>0;i-=Lowbit(i))
	{
		total+=c[i];
	}
	return total;
}