Pagini recente » Cod sursa (job #2680450) | Cod sursa (job #1169154) | Cod sursa (job #3188776) | Cod sursa (job #2503342) | Cod sursa (job #480253)
Cod sursa(job #480253)
#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]>=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;
}