给你一串含有c个正整数的数组,求出有多少个下标的连续区间,它们的和大于等于x。
(0 < c <= 1000000, 0 <= x <= 100000000)
双指针
# include<iostream>
# include<cstring>
using namespace std;
typedef long long LL;
const int N = 100000010;
LL a[N];
int n,x;
int l,r;
LL cnt, sum;
int main()
{
cin>>n>>x;
for(int i = 1; i<=n; i++)
scanf("%lld",a+i);
while(r<n)
{
while(sum<x && r<n)
sum+=a[++r];
if(sum>=x) cnt+=(n-r+1);
while(sum>=x && l<r)
{
sum-=a[++l];
if(sum>=x) cnt+=(n-r+1);
}
}
cout<<cnt<<endl;
}