| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 9358 | Accepted: 3767 |
Description
Input
Output
Sample Input
2 10 15 5 1 3 5 10 7 4 9 2 8 5 11 1 2 3 4 5
Sample Output
2 3
Source
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[100050],sum[100051];
int main()
{
int n,s;
int test;
cin>>test;
while(test--)
{
cin>>n>>s;
for(int i=0;i<n;i++)
cin>>a[i];
memset(sum,0,sizeof(sum));
for(int i=0;i<n;i++) //将它们的和存在一个sum数组里面
sum[i+1]=sum[i]+a[i];
if(sum[n]<s)
{
printf("0\n");
continue;
}
int res=n;
for(int j=0;sum[j]+s<=sum[n];j++)
{
int t=lower_bound(sum+j,sum+n,sum[j]+s)-sum;
if(res>t-j)
{
res=t-j;
}
}
printf("%d\n",res);
}
return 0;
}
原文:http://blog.csdn.net/qq_qingtian/article/details/45418297