Cod sursa(job #271507)

Utilizator FlorianFlorian Marcu Florian Data 5 martie 2009 14:19:59
Problema Zebughil Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
#define Inf 25
FILE*f=fopen("zebughil.in","r");
FILE*g=fopen("zebughil.out","w");
int st[32];
char viz[32];
int S;
int nr,nrmin,n;
int G, z[32];
int list[32];
inline void back(int k)
 {
  if(k==n+1)
   {
    if(nr < nrmin) nrmin = nr;
   }
  else if(nr<nrmin)
   {
    int i;
    for(i=1;i<=n;++i)
     if(viz[i]!='1')
      {
       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;
 }