给定一个长度为N(10<N<100000)的正整数序列。每个正整数都小于等于10000,给定一个正整数S(S<100000000)。编写一个程序找到一个最小长度的子序列,要求这个子序列的和大于等于S。如果解不存在,则输出0。
输入格式
第一行两个整数N和S,第二行包括n个正整数表示数列A,两两之间用空格分隔。
输出格式
一个符合题目要求的整数。
输入/输出例子1
输入:
5 11
1 2 3 4 5
输出:
3
样例解释
无
具体代码
#include<bits/stdc++.h>
using namespace std;
int n,a[300000],mi=300000,c;
long long s;
int main()
{
cin>>n>>s;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int x=1;x<n;x++)
{
int y;
for(y=x;y<=n;y++)
{
c+=a[y];
if(c>=s)break;
if(y==n)goto t;
}
mi=min(y-x+1,mi);
t: ;
c=0;
}
if(mi==300000)mi=0;
cout<<mi;
return 0;
}