比赛 数列操作练习题 评测结果 AAAAAAAAAAAAAAA
题目名称 数列操作A 最终得分 100
用户昵称 doge 运行时间 2.418 s
代码语言 C++ 内存使用 0.70 MiB
提交时间 2017-03-19 18:35:28
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,x,y,z,s;
string c;
const int maxn=100010;
int f[maxn];
int lowbit(int x)
{
	return x&(-x);
}
int add(int x,int k){
	int p=x;
	while(p<=n){
		f[p]+=k;
		p+=lowbit(p);
	}
}
int sum(int x){
	int he=0,p=x;
	while(p>0)
	{
		he+=f[p];
		p-=lowbit(p);
	}
	return he;
}
int main()
{
	freopen("shulie.in","r",stdin);
	freopen("shulie.out","w",stdout);
	//ios::sync_with_stdio(false);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s;
		add(i,s);
	}
	cin>>m;
	//for(int i=1;i<=n;i++) cout<<f[i]<<endl;;
	for(int i=1;i<=m;i++){
		cin>>c>>y>>z;
		if(c[0]=='A') add(y,z);
		else cout<<sum(z)-sum(y-1)<<endl;
	}
	return 0;
}