记录编号 259682 评测结果 AAAAAAAAAAAAAAAA
题目名称 数列操作A 最终得分 100
用户昵称 GravatarSky_miner 是否通过 通过
代码语言 C++ 运行时间 0.173 s
提交时间 2016-05-11 08:04:04 内存使用 1.82 MiB
显示代码纯文本
#include<cstdio>
using namespace std;
const int maxn = 100000 + 10 ;
int T[maxn<<2],M;
inline void read(int &x){
	x=0;char ch;
	while(ch=getchar(),ch<'!');
	while(x=10*x+ch-'0',ch=getchar(),ch>'!');
}
void Build(int n){
	for(M=1;M<=n+1;M<<=1);
	for(int i=M+1;i<=n+M;++i){
		read(T[i]);
	}
	for(int i=M-1;i>0;--i){
		T[i] = T[i<<1] + T[i<<1|1];
	}
}
void add(int id,int val){
	for(T[id+=M]+=val,id>>=1;id;id>>=1)
		T[id] = T[id<<1] + T[id<<1|1];
}
void change(int id,int val){
	for(T[id+=M]=val,id>>=1;id;id>>=1)
		T[id] = T[id<<1] + T[id<<1|1];
}
int Query(int s,int t){
	int ret = 0;
	for(s=s+M-1,t=t+M+1;s^t^1;s>>=1,t>>=1){
		if(~s & 1 ) ret += T[s^1];
		if( t & 1 ) ret += T[t^1]; 
	}
	return ret;
}
int main(){
	freopen("shulie.in","r",stdin);
	freopen("shulie.out","w",stdout);
	int n;read(n);
	Build(n);
	char ch[2];int s,t;
	int T;read(T);
	while(T--){
		scanf("%s",ch);
		if(  *ch == 'S' || *ch == 'Q'){
			read(s),read(t);
			printf("%d\n",Query(s,t));
		}else if( *ch == 'A' ){
			read(s),read(t);
			add(s,t);
		}else if( *ch == 'C'){
			read(s),read(t);
			change(s,t);
		}
	}
}