poj 3061

 1 #include <iostream>
 2 #include <numeric>
 3 #include <algorithm>
 4 int N, S;
 5 int a[100001];
 6 int tc;
 7 int main()
 8 {
 9     std::cin >> tc;
10     for(int i = 0; i < tc; ++i)
11     {
12     
13         std::cin >> N >> S;    
14         int minLen = N;
15         a[0] = 0;
16         for(int j = 0; j < N; ++j)
17         {
18             std::cin >> a[j+1];
19             a[j+1] += a[j];
20         }
21         if(a[N] < S )
22         {
23             std::cout << 0 << std::endl;
24             continue;
25         }
26         
27         for(int j = 1; a[j]+S <= a[N]; ++j)
28         {
29             int t = std::lower_bound(a+j, a+N+1, a[j]+S) - a;
30             minLen = std::min(minLen, t - j);
31         }
32         std::cout << minLen << std::endl;
33     }
34             
35     return 0;
36 }

 

posted @ 2014-10-20 23:46  多解方程式  阅读(179)  评论(0编辑  收藏  举报