#include<bits/stdc++.h>
#define maxn 100005
using namespace std;
int n,k;
int a[maxn],sum[maxn];
int find(int now,int l,int r){
int mid,nowans;
while(l<=r){
mid=(l+r)>>1;
if(sum[mid]-sum[now-1]>=k){
nowans=mid;
r=mid-1;
}else{
l=mid+1;
}
}
return nowans;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
int ans=0;
for(int i=1;i<=n;i++){
int right=find(i,i,n);
if(right!=0) ans=ans+(n-right+1);
}
cout<<ans;
return 0;
}
这段代码
不将第二个for循环里面的"cout<<endl;"注释时,答案正确
但是将那一行删掉,就有问题,只会输出4
是不是RE了