Cod sursa(job #1009476)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 13 octombrie 2013 11:58:55
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define one(x) (x&(x-1))^x
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int sol[1<<17][18],el[18],n,g,inf=2147000000,res=0;
void Solve()
{ int i,j,c,s,ram;
   for(i=0;i<n;i++)
    sol[1<<i][1]=g-el[i];
      res=n;
  for(s=0;s<(1<<n);s++)
   for(c=1;c<=n;c++)
    if (sol[s][c]>-1)
     { if (s==((1<<n)-1))
         {res=c; return;}
      for(i=n-1;i>=0;i--)
       if ((s&(1<<i))==0)
        { ram=sol[s][c];
           if (ram>=el[i])
            sol[s+(1<<i)][c]=max(sol[s+(1<<i)][c],ram-el[i]);
           else
            sol[s+(1<<i)][c+1]=max(sol[s+(1<<i)][c+1],g-el[i]);
        }
     }


}
int main()
{ int i,j;
   for(i=1;i<=3;i++)
    { fin>>n>>g;
        memset(sol,-1,sizeof(sol));
       for(j=n-1;j>=0;j--) fin>>el[j];

       Solve();
       fout<<res<<"\n";
    }
    return 0;
}