比赛 2025.3.6 评测结果 C
题目名称 WHZ 的序列 最终得分 0
用户昵称 QPY666 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2025-03-06 20:28:18
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,a[100100],m,p[400400],i,l,r,d;
void pu(long long t,long long l,long long r){
    if(l==r){
        p[t]=a[l];
    }
    long long mi=(l+r)/2;
    pu(t*2,l,mi);
    pu(t*2+1,mi+1,r);
    p[t]=p[t*2]-p[t*2+1];
}
long long fin(long long t,long long l,long long r,long long l1,long long r1){
    if(l==l1&&r==r1){
        return p[t];
    }
    long long mi=(l+r)/2;
    if(l1>mi){
        return fin(t*2+1,mi+1,r,l1,r1);
    }
    else if(ri<=mi){
        return fin(t*2,l,mi,l1,r1);
    }
    else{
        return fin(t*2,l,mi,l1,r1)+fin(t*2+1,mi+1,r,l1,r1);
    }
}
void add(long long t,long long l,long long r,long long l1,long long r1){
    if(l==r&&l>=l1&&l<=r1){
        p[t]+=d;
    }
    long long mi=(l+r)/2;
    pu(t*2,l,mi);
    pu(t*2+1,mi+1,r);
    p[t]=p[t*2]-p[t*2+1];
}
int main(){
    freopen("whz_sequence.in","r",stdin);
    freopen("whz_sequence.out","w",stdout);
    cin>>n;
    for(int x=1;x<=n;x++){
        scanf("%lld",&a[x]);
    }
    cin>>m;
    for(int x=1;x<=m;x++){
        cin>>i;
        if(i==1){
            cin>>l>>r>>d;
            add(1,1,n,l,r);
        }
        else{
            cin>>l>>r;
            cout<<fin(l,r)<<endl;
        }
    }
    return 0;
}