Cod sursa(job #1119434)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 24 februarie 2014 17:45:28
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
using namespace std;

int maxConf, n, g, w[20], D[140010][20], sol;
void initialise()
{
    for(int i = 0; i < maxConf; i++)
        for(int trucks = 0; trucks <= n; trucks++)
            D[i][trucks] = -1;
    D[0][0] = 0;
}

int main()
{
    ifstream fi("zebughil.in");
    ofstream fo("zebughil.out");
    int tests = 3;
    while(tests--)
    {
        fi >> n >> g;
        for(int i = 0; i < n; i++) fi >> w[i];
        maxConf = (1<<n);
        initialise();
        for(int i = 0; i < maxConf; i++)
            for(int trucks = 0; trucks <= n; trucks++)
                if(D[i][trucks] >= 0)
                for(int k = 0; k < n; k++)
                    if(!(i&(1<<k)))
                    {
                        if(w[k] <= D[i][trucks])
                            D[i+(1<<k)][trucks] = max(D[i][trucks] - w[k], D[i+(1<<k)][trucks]);
                        else
                            D[i+(1<<k)][trucks+1] = max(g - w[k], D[i+(1<<k)][trucks+1]);
                    }
        sol = 0;
        for(int i = 1; i <= n and !sol; i++)
            if(D[maxConf-1][i] >= 0) sol = i;
        fo << sol << "\n";
    }
    return 0;
}