woj-1301
2015-08-26 17:01
399 查看
Problem 1301 - Subsequence
Time Limit: 1000MS Memory Limit: 65536KB Difficulty: 3
Total Submit: 1201 Accepted: 547 Special Judge: No
Description
A sequence of N positive integers (10 < N < 100 000), each of them less than or equal 10000, and a positive integer S (S < 100 000 000) are given. Write a program to find the minimal length of the subsequence of consecutive elements of the sequence, the sum of which is greater than or equal to S.
Input
The first line is the number of test cases. For each test case the program has to read the numbers N and S, separated by an interval, from the first line. The numbers of the sequence are given in the second line of the test case, separated by intervals. The input will finish with the end of file.
Output
For each the case the program has to print the result on separate line of the output file.if no answer, print 0.
Sample Input
2
10 15
5 1 3 5 10 7 4 9 2 8
5 11
1 2 3 4 5
Sample Output
2
3
Hint
Source
Southeastern Europe 2006
Time Limit: 1000MS Memory Limit: 65536KB Difficulty: 3
Total Submit: 1201 Accepted: 547 Special Judge: No
Description
A sequence of N positive integers (10 < N < 100 000), each of them less than or equal 10000, and a positive integer S (S < 100 000 000) are given. Write a program to find the minimal length of the subsequence of consecutive elements of the sequence, the sum of which is greater than or equal to S.
Input
The first line is the number of test cases. For each test case the program has to read the numbers N and S, separated by an interval, from the first line. The numbers of the sequence are given in the second line of the test case, separated by intervals. The input will finish with the end of file.
Output
For each the case the program has to print the result on separate line of the output file.if no answer, print 0.
Sample Input
2
10 15
5 1 3 5 10 7 4 9 2 8
5 11
1 2 3 4 5
Sample Output
2
3
Hint
Source
Southeastern Europe 2006
#include<stdio.h> #define max 100000 int answer(int array[], int n, int sum) { int temp = 0; int i = 0; int j = i; int len = n; while (j < n) { while (temp < sum) { temp += array[j]; ++j; if (j >= n) break; } if (temp < sum) return len; while (temp >= sum) { temp -= array[i]; ++i; //if (i >= j) break; } if (len > j - i + 1) len = j - i + 1; } return len; } int main() { int T; int n, array[max], sum; int sum_array = 0; scanf("%d", &T); while (T > 0) { scanf("%d%d", &n, &sum); for (int i = 0; i < n; ++i) { scanf("%d", &array[i]); sum_array += array[i]; } if (sum_array < sum) printf("0\n"); else printf("%d\n", answer(array, n, sum)); sum_array = 0; --T; } return 0; }
相关文章推荐
- [华为机试] 最高分是多少
- 论文提要“Hypercolumns for Object Segmentation and Fine-grained Localization”
- volatile和explicit
- sass 使用 css预编译
- Java数据库操作
- 2015-08-24
- [转]放松是修行的第一课 《次第花开》
- Handsontable对单元格的操作
- HDU 1695 GCD ( 容斥 + 欧拉 )
- java.util.ConcurrentModificationException 解决办法
- 没有JPEGEncoderOptions的解决方法
- Pin instrumentation工具安装问题(command not found)
- Spring之 整合Log4j
- swift 异常处理
- android 截屏
- 线性表
- Badboy自动化测试工具 读取Excel
- android.support.v4.app.Fragment vs android.app.Fragment 的区别
- hdu1224 dp
- Appium 截图