记录编号 166277 评测结果 AAAAAAAAAAAAAAA
题目名称 数列操作A 最终得分 100
用户昵称 Gravatarforever 是否通过 通过
代码语言 C++ 运行时间 0.850 s
提交时间 2015-06-14 20:40:23 内存使用 7.94 MiB
显示代码纯文本
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
int n,m,y,u;
long long sum[1000000];
char s[6];
inline int in()
{
	char c=getchar();
	int x=0;
	while(c<'0'||c>'9') c=getchar();
	for(;c>='0'&&c<='9';c=getchar()) x=x*10+c-'0';
	return x;
}

void build(int x,int y,int r)
{
	if(x==y)
	{
		sum[r]=in();
		return;
	}
	int mid=(x+y)>>1;
	build(x,mid,r<<1);
	build(mid+1,y,(r<<1)+1);
	sum[r]=sum[r<<1]+sum[(r<<1)+1];
}
void add(int x,int y,int r,int u,int l)
{
	if(r==u)
	{
		sum[l]+=y;
		return;
	}
	int mid=(r+u)>>1;
	if(x<=mid)
	 add(x,y,r,mid,l<<1);
	else
	 add(x,y,mid+1,u,(l<<1)+1);
	sum[l]=sum[l<<1]+sum[(l<<1)+1];
}
long long wen(int x,int y,int r,int u,int l)
{
	if(x<=r&&y>=u)
	{
		return sum[l];
	}
	int mid=(r+u)>>1;
	long long he=0;
	if(x<=mid)
	 he+=wen(x,y,r,mid,l<<1);
	if(y>mid)
	 he+=wen(x,y,mid+1,u,(l<<1)+1);
	return he;
}
int main()
{   freopen("shulie.in","r",stdin);
	freopen("shulie.out","w",stdout);
    n=in();
    if(n==0)
    {
		exit(0);
    }
	build(1,n,1);
	m=in();
	for(int i=1;i<=m;++i)
	{
		scanf("%s",&s);
		if(s[0]=='S')
		{   y=in();
			u=in();
			printf("%lld\n",wen(y,u,1,n,1));
		}
		if(s[0]=='A')
		{
			y=in();
			u=in();
			add(y,u,1,n,1);
		}
	}
	//system("pause");
}