记录编号 588314 评测结果 AAAAAATTTT
题目名称 新年快乐! 最终得分 60
用户昵称 Gravatar健康铀 是否通过 未通过
代码语言 C++ 运行时间 23.674 s
提交时间 2024-05-28 19:28:35 内存使用 30.72 MiB
显示代码纯文本
    #include<bits/stdc++.h>
    using namespace std;
    long long c[1000010],s[4000010],n,m,ans;
    void xg(long long k,long long x,long long y,long long l,long long r,long long v){
        if(x<=l&&y>=r){
            s[k]+=v;
            return;
        }
        if(l>y||r<x){
                return;
        }
        xg(k*2,x,y,l,l+(r-l)/2,v);
        xg(k*2+1,x,y,l+(r-l)/2+1,r,v);
    }
    void ask(long long k,long long x,long long y,long long l,long long r,long long v,long long u){
        if(l>y||r<x){
                return;
        }
        v+=s[k];
        if(l==r){
            if(c[l]+v<=u){
                ans++;
                return;
            }
            else
            return;
        }
        ask(k*2,x,y,l,l+(r-l)/2,v,u);
        ask(k*2+1,x,y,l+(r-l)/2+1,r,v,u);
    }
    int main(){
        freopen("dss.in","r",stdin);
        freopen("dss.out","w",stdout);
        cin>>n;
        for(long long i=1;i<=n;i++){
            cin>>c[i];
        }
        cin>>m;
        while(m--){
            long long l,r,u,y;
            cin>>u>>l>>r>>y;
            if(u==1){
                xg(1,l,r,1,n,y);
            }
            else{
                ans=0;
                ask(1,l,r,1,n,0,y);
                cout<<ans<<endl;
            }
        }
        return 0;
    }