Cod sursa(job #2011881)

Utilizator refugiatBoni Daniel Stefan refugiat Data 17 august 2017 14:12:24
Problema Zebughil Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream si("zebughil.in");
ofstream so("zebughil.out");
const int NMAX=17;
int v[NMAX];
int v[1<<NMAX][NMAX+1];

int main()
{

    int n,g;
    for(int cc=1;cc<=3;++cc)
    {

        si>>n>>g;
        for(int j=0;j<n;++j)
            si>>v[j];
        v[0][0]=0;
        int all=(1<<n)-1;

        for(int i=1;i<=all;++i)
            for(int c=0;c<=n;++c)
                v[i][c]=-1;
        for(int i=0;i<=all;++i)
        {
            for(int j=0;j<n;++j)
            {
                if(i&(1<<j))
                    continue;
                for(int c=0;c<=n;++c)
                {
                    if(v[i][c]!=-1)
                    {
                        v[i+(1<<j)][c]=max(v[i+(1<<j)][c],v[i][c]-v[j]);
                        if(c+1<=n)
                            v[i+(1<<j)][c+1]=max(v[i+(1<<j)][c+1],g-v[j]);
                    }
                }
            }
        }

        int sol=2000000000;
        for(int c=1;c<=n;++c)
            if(v[all][c]!=-1)
            {
                sol=c;
                break;
            }
        so<<sol<<'\n';
    }

    return 0;
}