Cod sursa(job #271465)

Utilizator FlorianFlorian Marcu Florian Data 5 martie 2009 13:27:13
Problema Zebughil Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
#define Inf 25
FILE*f=fopen("zebughil.in","r");
FILE*g=fopen("zebughil.out","w");
int st[20];
int viz[20];
int S;
int nr,nrmin,n;
int G, z[20];
inline void back(int k)
 {
  if(k==n+1)
   {
    if(nr < nrmin) nrmin = nr;
   }
  else
   {
    int i;
    for(i=1;i<=n;++i)
     if(!viz[i])
      {
       st[k]=i;
       viz[i]=1;
       int x=S;
       if(z[i] + S > G) { nr++; x=S; S=z[i]; }
       else S+=z[i];
       back(k+1);
       if(z[i] + x > G) { nr--; S=x; }
       else S-=z[i];
       viz[i]=0;
      }
    }
 }
int main()
 {
  int t=3;
  int i;
  while(t--)
   {
    fscanf(f,"%d %d",&n,&G);
    for(i=1;i<=n;++i) fscanf(f,"%d",&z[i]);
    nrmin=Inf;
    nr=1; S=0;
    back(1);
    fprintf(g,"%d\n",nrmin);
   }
  return 0;
 }