Cod sursa(job #147972)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 3 martie 2008 19:28:54
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#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;
}