Pagini recente » Cod sursa (job #1532439) | Cod sursa (job #3328325) | Cod sursa (job #3254098) | Cod sursa (job #2122969) | Cod sursa (job #3310837)
#include <stdio.h>
#define MAXN 17
int v[MAXN];
int min[1024*128][2]; // [0] = nr camione; [1] = g ramas
int main()
{
FILE *fin, *fout;
int n,g,i,t,mask,next,aux1,aux2;
fin=fopen("zebughil.in", "r");
fout=fopen("zebughil.out", "w");
for(mask=1; mask<(1<<17); mask++)
min[mask][0]=20;
for(t=0; t<3; t++){
fscanf(fin, "%d%d", &n, &g);
for(i=0; i<n; i++)
fscanf(fin, "%d", &v[i]);
min[0][0]=0;
for(mask=0; mask<(1<<n)-1; mask++){
for(i=0; i<n; i++){
next=(mask|(1<<i));
if(next!=mask){
if(v[i]<=min[mask][1]){
aux1=min[mask][0];
aux2=min[mask][1]-v[i];
}else{
aux1=min[mask][0]+1;
aux2=g-v[i];
}
if(aux1<min[next][0]||(aux1==min[next][0]&&aux2>min[next][1])){
min[next][0]=aux1;
min[next][1]=aux2;
}
}
}
min[mask][0]=20;
min[mask][1]=0;
}
fprintf(fout, "%d\n", min[(1<<n)-1][0]);
min[(1<<n)-1][0]=20;
min[(1<<n)-1][1]=0;
}
fclose(fin);
fclose(fout);
return 0;
}