标签:
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 const int maxn = 100010; 5 6 int A[maxn], B[maxn]; 7 8 int main(void) 9 { 10 int n, S; 11 while (~scanf("%d%d", &n, &S)) 12 { 13 for (int i = 1; i <= n; i++) 14 scanf("%d", &A[i]); 15 B[0] = 0; 16 for (int i = 1; i <= n; i++) 17 B[i] = B[i - 1] + A[i]; 18 int ans = n + 1; 19 int i = 1; 20 for (int j = 1; j <= n; j++) 21 { 22 if (B[i - 1] > B[j] - S) 23 continue; // 没有满足条件的i,换下一个j 24 while (B[i] <= B[j] - S) 25 i++; // 求满足B[i-1]<=B[j]-S的最大i 26 ans = min(ans, j - i + 1); 27 } 28 printf("%d\n", ans == n + 1 ? 0 : ans); 29 } 30 return 0; 31 }
标签:
原文地址:http://www.cnblogs.com/biu-biu-biu-/p/5786924.html