#include <cstdio>
#include <algorithm>
//挑战程序设计竞赛 例题
//抄书
using namespace std;
int a[100010];
int sum[100011];
int main()
{
int N;
scanf("%d",&N);
for(int i=0;i<N;i++)
{
int NUM;
scanf("%d",&NUM);
int S;
scanf("%d",&S);
for(int j=0;j<NUM;j++)
{
scanf("%d",&a[j]);
sum[j+1]=sum[j]+a[j];
}
if(sum[NUM]<S)
{
printf("0\n");
//break;
continue;//谢谢博友文章
}
int res=NUM;
for(int s=0;sum[s]+S<=sum[NUM];s++)
{
int t=lower_bound(sum+s,sum+NUM,sum[s]+S)-sum;
res=min(res,t-s);
}
printf("%d\n",res);
}
return 0;
}
由 N 个数字组成的序列,求最短的连续子序列使和大于等于 S 。