题目链接:https://cn.vjudge.net/problem/UVALive-2678
题意:找出区间的和大于等于S的最短区间
思路:尺取法
#include<algorithm>
#include<string.h>
#include<stdio.h>
using namespace std;
int A[100010];
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k))
{
for(int i=1;i<=n;i++)
scanf("%d",&A[i]);
int l=0,r=0,ans=1e9,sum=0;
for(r=1;r<=n;r++)
{
sum+=A[r];
while(sum>=k)
{
ans=min(ans,r-l);
sum-=A[++l];
}
}
printf("%d\n",ans==1e9?0:ans);
}
}