RT,即每个 subtask 都错了几个点。
是前缀和,但是不知是哪里错了
Record
code:
#include<bits/stdc++.h>
using namespace std;
int n,q,a[200001],ans,dt,sum,b[200001],c[200001],sum1[200001],sum2[200001];
int main() {
cin>>n>>q;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=n;i>=1;i--){
sum+=a[i];
if(a[i]>0){
dt=i;
sum=a[i];
b[i]++;
}
if(a[i]<=0){
if(sum>0)
b[dt]++;
}
}
for(int i=1;i<=n;i++){
sum1[i]=sum1[i-1]+b[i];
}
int tot=n;
for(int i=n;i>=1;i--){
if(b[i]!=0)
tot=i;
c[i]=tot;
}
// for(int i=1;i<=n;i++)
// cout<<sum1[i]<<" ";
// cout<<endl;
for(int l,r,i=1;i<=q;i++){
cin>>l>>r;
ans=sum1[r]-sum1[c[l]];
// cout<<ans<<endl;
ans+=min(c[l]-l+1,b[c[l]]);
cout<<max(ans,0)<<endl;
}
return 0;
}
/*
3 1
1 -2 -3
2 3
*/