Pagini recente » Cod sursa (job #121588) | Cod sursa (job #3163899) | Cod sursa (job #597376) | Cod sursa (job #1444438) | Cod sursa (job #147972)
Cod sursa(job #147972)
#include<stdio.h>
FILE*fin=fopen("zebughil.in","r");
FILE*fout=fopen("zebughil.out","w");
#define maxn (1<<18)
#define inf 10000
int main()
{
int t,i,p2,config,prec,r1[maxn],r2[maxn],c[20],wleft,n,g,lim,nr_camioane;
for(t=1;t<=3;t++)
{
fscanf(fin,"%d%d",&n,&g);
for(i=1;i<=n;i++)
fscanf(fin,"%d",&c[i]);
lim=(1<<n);
r1[0]=0;r2[0]=0;
for(config=1;config<lim;config++)
{
r1[config]=inf;
p2=1;
for(i=0;i<n;i++,p2*=2)
if(config&p2)
{
prec=config-p2;
if(r2[prec]>=c[i+1]){nr_camioane=r1[prec];wleft=r2[prec]-c[i+1];}
else{nr_camioane=r1[prec]+1;wleft=g-c[i+1];}
if(nr_camioane<r1[config])
{
r1[config]=nr_camioane;
r2[config]=wleft;
}
else if(nr_camioane==r1[config]&&r2[config]<wleft) r2[config]=wleft;
}
}
fprintf(fout,"%d\n",r1[(1<<n)-1]);
}
fclose(fin);
fclose(fout);
return 0;
}