Cod sursa(job #1009349)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 12 octombrie 2013 22:11:03
Problema Zebughil Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 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],sum[1<<17],numb[1<<17],n,g,inf=2147000000;
void Solve()
{ int i,j;

  for(i=1;i<(1<<n);i++)
    sum[i]=sum[i&(i-1)]+sol[one(i)];

  for(i=1;i<(1<<n);i++)
   if (sum[i]<=g)  sol[i]=1;
    else sol[i]=inf;

  for(i=1;i<(1<<n);i++)
   for(j=i&(i-1);j>0;j=i&(j-1))
    if (sol[j] && sol[j^i])
     sol[i]=min(sol[i],sol[j]+sol[j^i]);

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

       Solve();
    }
    return 0;
}