记录编号 424138 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 数列操作C 最终得分 100
用户昵称 Gravatar~玖湫~ 是否通过 通过
代码语言 C++ 运行时间 1.161 s
提交时间 2017-07-12 20:55:25 内存使用 2.19 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define ll long long
const int M=100000+10;
ll n,m;
ll a[M],sum[M],b[M],c[M];
inline ll read(){
    ll x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
inline int lb(int x){return (x&-x);}
inline ll add(ll a[],ll pos,ll zhi){
    while(pos<=n){
        a[pos]+=zhi;
        pos+=lb(pos);
    }
}
inline ll query(ll a[],ll pos){
    ll ans=0;
    while(pos){
        ans+=a[pos];
        pos-=lb(pos);
    }
    return ans;
}
int DK(){
    freopen("shuliec.in","r",stdin);
	freopen("shuliec.out","w",stdout);
    n=read();
    for(int i=1;i<=n;i++){
        a[i]=read();
        sum[i]=sum[i-1]+a[i];
    }
    m=read();
    char s[5];
    ll aa,bb,cc;
    for(int i=1;i<=m;i++){
        scanf("%s",s);
        aa=read();bb=read();
        if(s[0]=='A'){
            cc=read();
            add(b,aa,cc);add(b,bb+1,-cc);
            add(c,aa,aa*cc);add(c,bb+1,(-cc)*(bb+1));
        }
        else{
            ll ans1=sum[bb]+(bb+1)*query(b,bb)-query(c,bb);
            ll ans2=sum[aa-1]+aa*query(b,aa-1)-query(c,aa-1);
            printf("%lld\n",ans1-ans2);
        }
    }
    //while(1);
    return 0;
}
int dk=DK();
int main(){
    ;
}