记录编号 440229 评测结果 AAAAAAAAAAAAAAA
题目名称 数列操作A 最终得分 100
用户昵称 Gravatarliuyu 是否通过 通过
代码语言 C++ 运行时间 0.991 s
提交时间 2017-08-22 20:31:44 内存使用 1.46 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

int n,m,A[100000+10],sum[200008],s,t,ans;
char d[10];

void build(int o,int l,int r){
	int lc=o*2,rc=o*2+1;
	int m=l+(r-l)/2;
	if(l==r)sum[o]=A[l];
	else {
		build(lc,l,m),build(rc,m+1,r);
	    sum[o]=sum[lc]+sum[rc];
	}
}
void sumans(int o,int l,int r){
	int lc=o*2,rc=o*2+1;
	int m=l+(r-l)/2;
	if(s<=l&&t>=r){
		ans+= sum[o];
		return ;
	}
	if(s<=m)sumans(lc,l,m);
	if(t>m)sumans(rc,m+1,r);
	
}
void add(int o,int l,int r)
{
	int lc=o*2,rc=o*2+1;
	int m=l+(r-l)/2;
	if(l==r)sum[o]+=t;
	else{
		if(s<=m)add(lc,l,m);
		if(s>m)add(rc,m+1,r);sum[o]=sum[rc]+sum[lc];
	}
	
}
int main()
{
	freopen("shulie.in","r",stdin);
	freopen("shulie.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&A[i]);
	scanf("%d",&m);
	build(1,1,n);
	
	while(m--){
		scanf("%s%d%d",d,&s,&t);
		if(d[0]=='S'){
			ans=0;
			sumans(1,1,n);
			printf("%d\n",ans);
		}
		else {
			add(1,1,n);
		}
	}
	return 0;
}