Pagini recente » Cod sursa (job #2259314) | Cod sursa (job #2706591) | Cod sursa (job #1292943) | Cod sursa (job #501974) | Cod sursa (job #471556)
Cod sursa(job #471556)
#include <algorithm>
using namespace std;
#define MAX (1<<17)+5
#define DIM 20
int bst[MAX][DIM];
int v[DIM];
int n,g;
void read ()
{
int i;
scanf ("%d%d",&n,&g);
for (i=1; i<=n; ++i)
scanf ("%d",&v[i]);
}
void solve ()
{
int i,j,k;
memset (bst,-1,sizeof (bst));
bst[0][0]=g;
for (i=0; i<(1<<n); ++i)
for (j=0; j<n; ++j)
for (k=1; k<=n; ++k)
if (!(i&(1<<(k-1))) && bst[i][j]!=-1)
if (bst[i][j]>=v[k])
bst[i|(1<<(k-1))][j]=max (bst[i|(1<<(k-1))][j],bst[i][j]-v[k]);
else
bst[i|(1<<(k-1))][j+1]=max (bst[i|(1<<(k-1))][j+1],g-v[k]);
}
void print ()
{
int i;
for (i=0; i<n; ++i)
if (bst[(1<<n)-1][i]!=-1)
{
printf ("%d\n",i+1);
return ;
}
printf ("1\n");
}
int main ()
{
freopen ("zebughil.in","r",stdin);
freopen ("zebughil.out","w",stdout);
int i;
for (i=1; i<=3; ++i)
{
read ();
solve ();
print ();
}
return 0;
}