菜鸟生成记(77)
水题,不过要加一点点的优化;纯暴力O(n^3),前缀和预处理一下,O(n*n)
#include<iostream>
#include<cstring>
using namespace std;
int a[11000];
int main()
{
int n,s;
while(cin>>n>>s)
{
int len1=20000;
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++)
{
cin>>a[i];
a[i]+=a[i-1];//前缀和预处理
}
//a[x]:a[1]到a[x]的和
//a[y]-a[x]:a[x+1]到a[y]的和
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(a[j]-a[i]>=s)//区间和大于等于s
{//记录区间长度
len1=min(len1,j-i);
}
}
}
if(len1==20000)
cout<<0<<endl;
else
cout<<len1<<endl;
}
return 0;
}