这道题,估计你也看懂意思了!
我就不多说了,直接上代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=100005;
int a[maxn];
int b[maxn];
int main()
{
int n,t,i;
while(scanf("%d%d",&n,&t)!=EOF)
{
memset(a,0,sizeof(a));
for(i=1; i<=n; i++)
{
scanf("%d",&b[i]);
a[i]=a[i-1]+b[i];
}
int ant=0,pre=0,last=1;
while(last<=n)
{
if(a[last]-a[pre]<=t)
{
ant=max(ant,last-pre);
last++;
}
else
pre++;
}
printf("%d\n",ant);
}
return 0;
}
我觉得这方法蛮好的,求最小和,但长度最大