记录编号 288864 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 数列操作C 最终得分 100
用户昵称 Gravatar521 是否通过 通过
代码语言 C++ 运行时间 1.834 s
提交时间 2016-08-03 16:54:44 内存使用 3.84 MiB
显示代码纯文本
#include<stdio.h>
#define LL long long
#define M 100001
inline void read_int(int&x)
{
	int flag=1;
	char ch;
	while(ch=getchar(),ch<'0'||ch>'9') if(ch=='-') flag=-1;
	x=(ch^'0');
	while(ch=getchar(),ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^'0');
	x*=flag;
}
inline void read_long(LL&x)
{
	int flag=1;
	char ch;
	while(ch=getchar(),ch<'0'||ch>'9') if(ch=='-') flag=-1;
	x=(ch^'0');
	while(ch=getchar(),ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^'0');
	x*=flag;
}
//===============================================================
LL sum[M<<2],add[M<<2];
inline void build(int l,int r,int rt)
{
	if(l>r) return ;
	if(l==r){
		read_long(sum[rt]);
		return ;
	}
	int mid=l+r>>1;
	build(l,mid,rt<<1);
	build(mid+1,r,rt<<1|1);
	sum[rt]=sum[rt<<1]+sum[rt<<1|1];
}
inline void pushdown(int rt,int x)
{
	if(add[rt]==0) return ;
	add[rt<<1]+=add[rt];
	add[rt<<1|1]+=add[rt];
	sum[rt<<1]+=(x-(x>>1))*add[rt];
	sum[rt<<1|1]+=(x>>1)*add[rt];
	add[rt]=0;
}
inline void update(int L,int R,LL x,int l,int r,int rt)
{
	if(L>R||l>r) return ;
	if(l>=L&&r<=R){
		add[rt]+=x;
		sum[rt]+=x*(r-l+1);
		return ;
	}
	pushdown(rt,r-l+1);
	int mid=l+r>>1;
	if(mid>=L) update(L,R,x,l,mid,rt<<1);
	if(mid<R) update(L,R,x,mid+1,r,rt<<1|1);
	sum[rt]=sum[rt<<1]+sum[rt<<1|1];
}
inline LL query(int L,int R,int l,int r,int rt)
{
	if(L>R||l>r) return 0;
	if(l>=L&&r<=R) return sum[rt];
	pushdown(rt,r-l+1);
	int mid=l+r>>1;
	LL ret=0;
	if(mid>=L) ret+=query(L,R,l,mid,rt<<1);
	if(mid<R) ret+=query(L,R,mid+1,r,rt<<1|1);
	return ret;
}
int _521()
{
	freopen("shuliec.in","r",stdin);
	freopen("shuliec.out","w",stdout);
	int n,m,i,a,b;
	LL c;
	read_int(n);
	build(1,n,1);
	read_int(m);
	for(i=1;i<=m;i++){
		char ch[6]={0};
		scanf("%s",ch);
		if(ch[0]=='A'){
			read_int(a),read_int(b),read_long(c);
			update(a,b,c,1,n,1);
		}
		else{
			read_int(a),read_int(b);
			printf("%lld\n",query(a,b,1,n,1));
		}
	}
	return 0;
}
int _520=_521();
int main(){;}