Pagini recente » Cod sursa (job #2632020) | Cod sursa (job #1567271) | Cod sursa (job #1581630) | Cod sursa (job #2181085) | Cod sursa (job #1010647)
#include <stdio.h>
#include <string.h>
class Zebughil {
public:
int n, g, x[18];
int Camioane[1<<17];
Zebughil() {
memset(Camioane,0,sizeof(Camioane));
n=0;
g=0;
}
int camioane(int pietre)
{
if(Camioane[pietre]==0)
{
int i,greutate=0,k;
for(i=0;i<n;++i)
{
if((pietre&(1<<i))!=0)
greutate+=x[i];
}
if(greutate<=g)
Camioane[pietre]=1;
else
{
Camioane[pietre]=n;
/*
for(i=1;i<pietre;++i)
{
if((pietre|i)==pietre)
{
k=camioane(i)+camioane(pietre^i);
if(k<Camioane[pietre])
Camioane[pietre]=k;
}
}//*/
for(i=(pietre-1)&pietre;i!=0;i=(i-1)&pietre)
{
k=camioane(i)+camioane(pietre^i);
if(k<Camioane[pietre])
Camioane[pietre]=k;
}
}
}
return Camioane[pietre];
}
};
int main(void) {
int i;
Zebughil* zebughil;
freopen("zebughil.in","r",stdin);
freopen("zebughil.out","w",stdout);
for(int k=1;k<=3;++k)
{
zebughil = new Zebughil();
scanf("%d%d",&zebughil->n,&zebughil->g);
for(i=0;i<zebughil->n;++i)
{
scanf("%d",&zebughil->x[i]);
}
printf("%d\n",zebughil->camioane((1<<zebughil->n)-1));
delete zebughil;
}
return 0;
}