Numbers of interval
现在有一个数组,请计算有多少的区间l,r满足 ∑ri=lai≥k.
输入格式
第一行输入n,k(1≤n,k≤106).
接下来输入n个数,第i个数为ai(1≤ai≤103).
输出格式
输出满足条件的区间个数
input
3 5
2 3 5
output
4
我不明白我开始为啥会排个序
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long ll;
ll f[1000005];
ll n,k;
int main()
{
scanf("%lld%lld",&n,&k);
for(ll i=0; i<n; i++)
scanf("%lld",&f[i]);
ll s=0,ss=0;
ll sum=f[0],l=0;
for(ll i=1; i<n;)
{
if(sum<k)
{
ss=0;
sum+=f[i];
i++;
}
while(sum>=k)
{
ss++;
sum-=f[l];
l++;
}
s=s+(n-i+1)*ss;
}
printf("%lld\n",s);
return 0;
}