A了12个小点,但是是 0 pts
查看原帖
A了12个小点,但是是 0 pts
757869
hysbzdkf楼主2023/10/2 08:43

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
*/
2023/10/2 08:43
加载中...