这题和poj 3061一样,就是输入结束条件不一样,poj的用尺取法过的,这题就写个二分吧
题意看下面链接的博客吧
尺取法链接:http://blog.csdn.net/zztrhxnss/article/details/78055742
二分法:
#include<cstdio>
#define M 100005
int a[M];
int pre[M];
int n, s;
bool judge(int x)
{
for(int i = 1; i <= n + 1 - x; i++)
{
if(s < pre[i + x - 1] - pre[i - 1])
return true;
}
return false;
}
int main()
{
while(scanf("%d %d", &n, &s) != EOF)
{
pre[0] = 0;
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
pre[i] = pre[i - 1] + a[i];
}
if(pre[n] < s)
{
printf("0\n");
continue;
}
int l = 1, r = n;
int mid;
while(l < r)
{
//printf("flag");
mid = (l + r) / 2;
if(judge(mid))r = mid;
else l = mid + 1;
}
printf("%d\n", l);
}
return 0;
}