第五题松果(cone)
【题目描述】 大森林有熊兄弟的好朋友松鼠蹦蹦,一天蹦蹦来到一很长的小路,发现沿路地上都有松果,高兴极了,决定尽可能多吃松果。蹦蹦观察到,每个松果的重量并不一相同,可蹦蹦的肚子容量 有限,总共最多只能吃重量C的松果。蹦蹦吃东西有个特点,一旦开吃就会不停的吃,不会漏过路上碰 到松果,直到遇到一个吃不下或吃完停止。也就是说松鼠蹦蹦只会吃 连续一段的松果。 已知路上共有N个松果,顺序的重量是wl,w2,….wn。蹦蹦最多可能吃多少颗松果?
【输入格式】 第一行,二个正整数,空格分开,表示N和C,N范围在[1..50000],C范围在[1..1000000]。 第二行,N个正整数,空格分开,表示从wl、w2,...wn,即松果的重量。每个松果重 量范围在[1..1000]。
【输出格式】 一个正整数,蹦蹦可以吃到的最多松果数量。 样例解群: 第1个样例,吃:(1, 2, 1, 1)这段的松果。 第2个样例,吃:(2, 1, 1)这段的松果。 输入样例输出样例
5 5
3 12 11
4
9 5
1 5 4 3 2 1 1 4 1
3
个人代码(请纠错)
#include<bits/stdc++.h>
using namespace std;
int n,c,l=1,ma,su,g;
long long a[50005];
int max(int a,int b) {
return a>b?a:b;
}
int main() {
cin>>n>>c;
for(int i=1; i<=n; i++) cin>>a[i];
for(int i=1; i<=n; i++) {
if(c-su>=a[i]){
su+=a[i];
g++;
}else{
ma=max(g,ma);
su-=a[l];
g=0;
}
l++;
}
cout<<g;
return 0;
}