Pagini recente » Cod sursa (job #634847) | Cod sursa (job #2093703) | Cod sursa (job #914531) | Cod sursa (job #1582519) | Cod sursa (job #75883)
Cod sursa(job #75883)
# include <stdio.h>
const long int T=3;
long int nco,sol,cam[20],g,n,weight[20];
void gen(long int i, long int lf)
{
long int j;
for (j=1;j<=nco;j++)
if (cam[j]+weight[i]<=g)
{
cam[j]+=weight[i];
if (i+1<=lf) gen(i+1,lf);
else if (sol>nco) sol=nco;
cam[j]-=weight[i];
}
nco++;
cam[nco]=weight[i];
if (i+1<=lf) gen(i+1,lf);
else if (sol>nco) sol=nco;
cam[nco]=0;
nco--;
}
void quick(long int li, long int lf)
{
long int i=li,j=lf,ii=0,jj=-1,auxi;
while (i<j)
{
if (weight[i]<weight[j])
{
auxi=weight[i];weight[i]=weight[j];weight[j]=auxi;
auxi=ii;ii=-jj;jj=-auxi;
}
i+=ii;j+=jj;
}
if (i-li>1) quick(li,i-1);
if (lf-i>1) quick(i+1,lf);
}
void citire(FILE *f);
int main()
{
FILE *f=fopen("zebughil.in","r");
FILE *gg=fopen("zebughil.out","w");
long int i,fs;
for (i=1;i<=T;i++)
{
citire(f);
sol=1000;
quick(1,n);
gen(1,n);
fprintf(gg,"%ld\n",sol);
}
fcloseall();
return 0;
}
////////////////////////////////
// INPUT and OUTPUT
////////////////////////////////
void citire(FILE *f)
{
fscanf(f,"%ld%ld",&n,&g);
long int i;
for (i=1;i<=n;i++) fscanf(f,"%ld",&weight[i]);
}