POJ-3061
#include <cstdio>
#include <algorithm>
using namespace std;
int main ( ) {
int t;
scanf ( "%d" , & t) ;
while ( t-- ) {
int n, m;
scanf ( "%d%d" , & n, & m) ;
int a[ n+ 2 ] ;
for ( int i= 1 ; i<= n; i++ )
scanf ( "%d" , & a[ i] ) ;
int j= 1 ;
int i= 1 ;
int ans= 1 << 29 ;
int p= 0 ;
for ( i= 1 ; ; ) {
while ( i<= n&& p< m)
p+ = a[ i++ ] ;
if ( p< m)
break ;
ans= min ( ans, i- j) ;
p- = a[ j++ ] ;
}
if ( ans>= n&& p< m)
ans= 0 ;
printf ( "%d\n" , ans) ;
}
return 0 ;
}
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
int n, ss;
int a[ 100005 ] , s[ 100005 ] ;
int main ( ) {
int t;
cin>> t;
while ( t-- ) {
memset ( a, 0 , sizeof ( a) ) ;
memset ( s, 0 , sizeof ( s) ) ;
int kk= 100005 ;
cin>> n>> ss;
for ( int i= 1 ; i<= n; i++ ) {
cin>> a[ i] ;
s[ i] = s[ i- 1 ] + a[ i] ;
}
if ( s[ n] < ss)
cout<< "0" << endl;
else {
for ( int i= 1 ; s[ i] + ss<= s[ n] ; i++ ) {
int k= lower_bound ( s+ i, s+ n+ 1 , s[ i] + ss) - s;
kk= min ( kk, k- i) ;
}
cout<< kk<< endl;
}
}
return 0 ;
}