Cod sursa(job #1823979)

Utilizator vladrochianVlad Rochian vladrochian Data 7 decembrie 2016 08:51:19
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <utility>

using namespace std;

const int N_MAX = 17;

ifstream fin("zebughil.in");
ofstream fout("zebughil.out");

int N, G;
int a[N_MAX + 3];

pair<int, int> d[(1 << N_MAX) + 5];

void Solve() {
    fin >> N >> G;
    for (int i = 0; i < N; ++i)
        fin >> a[i];

    for (int conf = 1; conf < (1 << N); ++conf) {
        d[conf] = {N_MAX, 0};
        for (int i = 0; i < N; ++i)
            if (conf >> i & 1) {
                int prv = conf ^ 1 << i;
                if (d[prv].second + a[i] <= 0)
                    d[conf] = min(d[conf], {d[prv].first, d[prv].second + a[i]});
                else
                    d[conf] = min(d[conf], {d[prv].first + 1, -G + a[i]});
            }
    }

    fout << d[(1 << N) - 1].first << "\n";
}

int main() {
    for (int i = 0; i < 3; ++i)
        Solve();
    return 0;
}