Pagini recente » Cod sursa (job #1486232) | Cod sursa (job #2869239) | Cod sursa (job #3122885) | Cod sursa (job #2361247) | Cod sursa (job #561638)
Cod sursa(job #561638)
# include <cstdio>
# include <cstring>
const char *FIN = "zebughil.in", *FOU = "zebughil.out" ;
const int MAX = 18 ;
int dp[1 << MAX], z[MAX] ;
int N, G ;
inline int max ( int a, int b ) {
return ( a > b ? a : b ) ;
}
int solve ( void ) {
dp[0] = G, memset ( &dp[1], -1, sizeof ( dp ) ) ;
for ( int i = 1; i <= N; ++i ) {
for ( int j = 1; j < 1 << N; ++j ) {
dp[j] == -1 ? 0 : dp[j] = G ;
for ( int k = 0; 1 << k <= j; ++k ) {
if ( j & 1 << k ) {
dp[j] = max ( dp[j], dp[j & ~ ( 1 << k )] - z[k + 1] ) ;
}
}
}
if ( dp[( 1 << N ) - 1] + 1 > 0 ) return i ;
}
return -1 ;
}
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
freopen ( FOU, "w", stdout ) ;
for ( int T = 1; T < 4; ++T ) {
scanf ( "%d %d", &N, &G ) ;
for ( int i = 1; i <= N; ++i )
scanf ( "%d", z + i ) ;
printf ( "%d\n", solve () ) ;
}
}