记录编号 |
588314 |
评测结果 |
AAAAAATTTT |
题目名称 |
新年快乐! |
最终得分 |
60 |
用户昵称 |
健康铀 |
是否通过 |
未通过 |
代码语言 |
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;
}