Pagini recente » Cod sursa (job #498357) | Cod sursa (job #3232828) | Cod sursa (job #1671378) | Cod sursa (job #1813951) | Cod sursa (job #480254)
Cod sursa(job #480254)
#include <stdio.h>
#define Nmax 18
int din[1<<Nmax][Nmax];
int v[Nmax];
int n,G;
inline int Maxim(int x,int y){ return x>y ? x:y; }
int main(){
int i,j,k,t;
freopen("zebughil.in","r",stdin);
freopen("zebughil.out","w",stdout);
for(t=1;t<=3;++t){
scanf("%d%d",&n,&G);
for(i=1;i<=n;++i) scanf("%d",&v[i]);
for(i=0;i<(1<<n);++i)
for(j=1;j<=n;++j) din[i][j]=-1;
din[0][1]=G;
for(i=0; i<(1<<n); ++i)
for(j=1;j<=n;++j)
if( din[i][j] != -1 )
for(k=0;k<n;++k)
if( !(i&(1<<k)) )
if( din[i][j]-v[k+1]>=0 )
din[i|(1<<k)][j]=Maxim(din[i|(1<<k)][j],din[i][j]-v[k+1]);
else din[i|(1<<k)][j+1]=Maxim(din[i|(1<<k)][j+1],G-v[k+1]);
for(j=1;j<=n;++j)
if( din[(1<<n)-1][j]!=-1 ) break;
printf("%d\n",j);
}
fclose(stdin); fclose(stdout);
return 0;
}