Cod sursa(job #1263552)

Utilizator diana97Diana Ghinea diana97 Data 14 noiembrie 2014 21:27:51
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f ("zebughil.in");
ofstream g ("zebughil.out");

const int NMAX = 17 + 1;

int n, gmax, configmax;
int sol[1 << NMAX], greutate[NMAX];

void citeste() {
    f >> n >> gmax;
    for (int i = 1; i <= n; i++) f >> greutate[i];
}

void rezolva() {
    configmax = (1 << n);
    for (int configuratie = 0; configuratie < configmax; configuratie++) sol[configuratie] = -1;
    sol[0] = gmax;
    for (int i = 1; i <= n; i++) {
        for (int configuratie = 0; configuratie < configmax; configuratie++) {
            if (sol[configuratie] != -1) sol[configuratie] = gmax;
            for (int j = 1; j <= n; j++)
                if (configuratie && (1 << (j - 1)) && sol[configuratie^(1 << (j - 1))] - greutate[j] > sol[configuratie])
                    sol[configuratie] = sol[configuratie ^ (1 << (j - 1))] - greutate[j];
        }
        if (sol[configmax - 1] != -1) {
            g << i << '\n';
            break;
        }
    }
}

int main() {
    int t = 3;
    while (t--) {
        citeste();
        rezolva();
    }
    return 0;
}