比赛 数列操作练习题 评测结果 AAAAAAAAAAAAAAA
题目名称 数列操作A 最终得分 100
用户昵称 spli 运行时间 0.235 s
代码语言 C++ 内存使用 0.70 MiB
提交时间 2017-03-18 23:33:47
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
int n;
int v;
int a[100010];
int m;
char s[5];
int x,y;

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

void add(int pos,int num){
	while(pos<=n){
		a[pos]+=num;
		pos+=lowbit(pos);
	}
}

int sum(int loc){
	int tot=0;
	while(loc>0){
		tot+=a[loc];
		loc-=lowbit(loc);
	}
	return tot;
}

int main(){
	freopen("shulie.in","r",stdin);
	freopen("shulie.out","w",stdout);
	
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		scanf("%d",&v);
		add(i,v);
		//cout<<a[i]<<" ";
	}
	scanf("%d",&m);
	for(int i=1;i<=m;++i){
		scanf("%s",s);
		if(s[0]=='A'){
			scanf("%d%d",&x,&y);
			add(x,y);
		}
		if(s[0]=='S'){
			scanf("%d%d",&x,&y);
			printf("%d",sum(y)-sum(x-1));
		}
	}
}