记录编号 422536 评测结果 AAAAAAAAAAAAAAA
题目名称 数列操作A 最终得分 100
用户昵称 Gravatarguss 是否通过 通过
代码语言 C++ 运行时间 1.052 s
提交时间 2017-07-09 20:43:05 内存使用 4.89 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
using namespace std;
int ans=0,x,y,a;
struct UMR
{
	int l,r,w;
}tree[400001];
void build(int l,int r,int k)
{
	tree[k].l=l,tree[k].r=r;
	if(l==r)
	{
		scanf("%d",&tree[k].w);
		return ;
	}
	int m=(l+r)/2;
	build(l,m,k*2);
	build(m+1,r,k*2+1);
	tree[k].w=tree[k*2].w+tree[k*2+1].w;
}
void add(int k,int y)
{
	if(tree[k].l==tree[k].r)
	{
		tree[k].w+=y;
		return ;
	}
	int m=(tree[k].l+tree[k].r)/2;
	if(a<=m)
		add(k*2,y);
	else
		add(k*2+1,y);
	tree[k].w=tree[k*2].w+tree[k*2+1].w;
}
void sum(int k)
{
	if(tree[k].l>=x&&tree[k].r<=y)
	{
		ans+=tree[k].w;
		return ;
	}
	int m=(tree[k].l+tree[k].r)/2;
	if(x<=m)
		sum(k*2);
	if(y>m)
		sum(k*2+1);
}
int main()
{
	freopen("shulie.in","r",stdin);
	freopen("shulie.out","w",stdout);
	int n,m;
	scanf("%d",&n);
	build(1,n,1);
	scanf("%d",&m);
	for(int i=1;i<=m;i++)
	{
		char q[3];
		scanf("%s",&q);
		if(q[0]=='A')
		{
			int b;
			scanf("%d %d",&a,&b);
			add(1,b);
		}
		else
		{
			ans=0;
			scanf("%d %d",&x,&y);
			sum(1);
			printf("%d\n",ans);
		}
	}
}