记录编号 598402 评测结果 AAAAAAAAAAAAAAA
题目名称 数列操作B 最终得分 100
用户昵称 Gravatar梦那边的美好ET 是否通过 通过
代码语言 C++ 运行时间 1.211 s
提交时间 2025-01-24 11:25:31 内存使用 6.54 MiB
显示代码纯文本
#include<bits/stdc++.h>
#define maxn 100010
#define ll long long
using namespace std;
int n,m,a1,a2,a3;
char s[10];
ll a[maxn],sum[maxn*4],lz[maxn*4];
void build(int p,int l,int r){
    if(l==r){sum[p]=a[l];return;}
    int mid=(l+r)/2;
    build(p*2,l,mid);build(p*2+1,mid+1,r);
    sum[p]=sum[p*2]+sum[p*2+1];
    return;
}
void xc(int p,int l,int r){
    if(lz[p]==0)return;
    int mid=(l+r)/2;
    sum[p*2]+=(ll)(mid-l+1)*lz[p];
    lz[p*2]+=lz[p];
    sum[p*2+1]+=(ll)(r-mid)*lz[p];
    lz[p*2+1]+=lz[p]; 
    lz[p]=0;
    return;
}
void insert(int p,int l,int r,int l1,int r1){
    if(l==l1&&r==r1){
        sum[p]+=(ll)(r-l+1)*(ll)a3;
        lz[p]+=a3;
        return;
    }
    xc(p,l,r);
    int mid=(l+r)/2;
    if(r1<=mid)insert(p*2,l,mid,l1,r1);
    else if(l1>mid)insert(p*2+1,mid+1,r,l1,r1);
    else insert(p*2,l,mid,l1,mid),insert(p*2+1,mid+1,r,mid+1,r1);
    sum[p]=sum[p*2]+sum[p*2+1];
    return;
}
ll getz(int p,int l,int r,int x){
    if(l==r)return sum[p];
    xc(p,l,r);
    int mid=(l+r)/2;
    if(x<=mid)return getz(p*2,l,mid,x);
    return getz(p*2+1,mid+1,r,x);
}
int main(){
    freopen("shulieb.in","r",stdin);
    freopen("shulieb.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
    build(1,1,n);
    scanf("%d",&m);
    while(m--){
        scanf("%s",s);
        if(s[0]=='A'){
            scanf("%d%d%d",&a1,&a2,&a3);
            insert(1,1,n,a1,a2);
        }
        else{
            scanf("%d",&a1);
            printf("%lld\n",getz(1,1,n,a1));
        }
    }
    return 0;
}