Pagini recente » Cod sursa (job #515588) | Cod sursa (job #1249127) | Cod sursa (job #3173211) | Cod sursa (job #1913011) | Cod sursa (job #944457)
Cod sursa(job #944457)
#include<fstream>
using namespace std ;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
#define maxn 17
#define maxstari ( 1 << 17 )
int din[maxstari] ;
int G, n, a[maxn] ;
int tst = 3 ;
void citire()
{
fin >> n >> G ;
for(int i = 0; i < n; ++i )
fin >> a[i] ;
}
void init_dinamica()
{
int limstari = ( 1 << n ) ;
for(int i = 0; i < limstari; ++i )
din[i] = -1 ;
din[0] = G ;
}
void rezolva_dinamica()
{
int limstari = ( 1 << n ) ;
int sol ;
for(int i = 1; i <= n; ++i )
{
for(int j = 0; j < limstari; ++j )
{
if( din[j] != -1 )
din[j] = G ;
for(int k = 0; k < n; ++k )
if( j & ( 1 << k ) && din[ j - ( 1 << k ) ] - a[k] > din[j] )
din[j] = din[ j - ( 1 << k ) ] - a[k] ;
}
if( din[ ( 1 << n ) - 1 ] >= 0 )
{
sol = i ;
break ;
}
}
fout << sol << "\n" ;
}
int main()
{
while( tst-- )
{
citire() ;
init_dinamica() ;
rezolva_dinamica() ;
}
return 0 ;
}