3 条题解

  • 0
    @ 2026-6-3 14:42:09
    #include<bits/stdc++.h>
    using namespace std;
    using ll=long long;
    const int N=5e5+10;
    int a[N],c[N];
    int n,m;
    int lowbit(int x){
        return x&-x;
    }
    void update(int x,int val){
        for(int i=x;i<=n;i+=lowbit(i)){
            c[i]+=val;
        }
    }
    ll sum(int x){
        ll ans=0;
        for(int i=x;i;i-=lowbit(i)){
            ans+=c[i];
        }
        return ans;
    }
    int main()
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            update(i,a[i]-a[i-1]);
        }
        while(m--){
            int op;
            cin>>op;
            if(op==1){
                int x,y,k;
                cin>>x>>y>>k;
                update(x,k);
                update(y+1,-k);
            }else{
                int x;
                cin>>x;
                cout<<sum(x)<<endl;
            }
        }
    }
    

    信息

    ID
    58
    时间
    1000ms
    内存
    256MiB
    难度
    普及
    标签
    递交数
    181
    已通过
    54
    上传者