给定长度为 n (10<N<100000)的数列整数a0,a1,……,an−1 以及整数 S (S<108)。求出总和不小于 S 的连续子序列的长度的最小值。如果解不存在,则输出 0。
样例输入:
10 15
5 1 3 5 10 7 4 9 2 8
样例输出:
2
我的代码:
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
int n,s,ans=100000000,x;
cin>>n>>s;
for(int i=1;i<=n;i++) cin>>x,a[i]=a[i-1]+x;
for(int i=1;i<=n;i++){
int t=lower_bound(a+i,a+n+1,a[i-1]+s)-a;
if(t<=n) ans=min(ans,t-i+1);
}
cout<<(ans==100000000?0:ans);
return 0;
}
WA了,求助,悬棺