比赛 2024.5.23练习赛 评测结果 WWWWWWWWWW
题目名称 新年快乐! 最终得分 0
用户昵称 健康铀 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2024-05-23 21:20:55
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int c[1000010],s[4000010],n,m,ans;
void xg(int k,int x,int y,int l,int r,int 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(int k,int x,int y,int l,int r,int v,int 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(int i=1;i<=n;i++){
        cin>>c[i];
    }
    cin>>m;
    while(m--){
        int 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;
}