【普及二】【长度最小的子数组2】

#include<bits/stdc++.h>
using namespace std;
int t,n,s,a[300010],l,r;
long long sum[300010];int ans;
int main()
{
	cin>>t;
	for(int ii=1;ii<=t;ii++)
	{
		cin>>n>>s;ans=0x3f3f3f3f;
		memset(sum,0,sizeof sum);
		for(int i=1;i<=n;i++)
		{
			cin>>a[i];
			sum[i]=sum[i-1]+a[i];
		}
		l=1;r=1;
		while(l<=n)
		{
			while(sum[r]-sum[l-1]<s&&r<=n)
			{
				r++;
			}
			if(sum[r]-sum[l-1]>=s)
			{
				if(r<l)
				{
					ans=min(1,ans);
				}
				else
				{
					ans=min(r-l+1,ans);
				}
			}
			l++;
		}
		if(ans==0x3f3f3f3f)
		{
			cout<<0<<endl;
		}
		else
		{
			cout<<ans<<endl;
		}
	}
	return 0;
}