Description
Input
Output
Sample Input
2 10 15 5 1 3 5 10 7 4 9 2 8 5 11 1 2 3 4 5
Sample Output
23
题目的意思就是:输入n,m,然后给你n个数,这n个数中,连续几个数加起来>m 并且找出最小的个数。
题解:这一道题就是用for循环遍历,然后判断是否>m 并且记录个数,并且与Min比较找到最小的值,然后减去一个数,继续判断
#include <stdio.h> #include <string.h> #include <iostream> #include <math.h> #include<stack> #include<vector> #include<queue> #include<algorithm> using namespace std; int a[110000]; int main() { int n, m, i, T, sum, l, r; scanf("%d", &T); while(T--) { scanf("%d%d", &n,&m); for(i=0;i<n;i++) scanf("%d", &a[i]); sum=r=l=0; int num=m+1; for(i=0;i<n;i++) { while(sum<m && r<n) { sum+=a[r]; r++; } if(sum<m) break; num=min(num, r-l); sum-=a[l]; l++; } if(num>m) printf("0\n"); else printf("%d\n", num); } return 0; }