Cod sursa(job #1557180)

Utilizator andreea_zahariaAndreea Zaharia andreea_zaharia Data 26 decembrie 2015 22:20:34
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>

#define CONFIGMAX 1<<17
#define NMAX 17

int T, N, G;

int d[CONFIGMAX + 5];
int vg[NMAX + 5];
long long SUM;

int main () {
    freopen ("zebughil.in", "r", stdin);
    freopen ("zebughil.out", "w", stdout);

    T = 3;
    while (T--) {
        scanf ("%d%d", &N, &G);
        for (int i = 0; i < N; i++) {
            scanf ("%d", &vg[i]);
        }

        for (int i = 1; i < (1 << N); i++) {
             SUM = 0;
             for (int bit = 0; bit < N; bit++) {
                if (i & (1 << bit)) {
                    SUM += vg[bit];
                }
             }

             if (SUM <= G) {
                d[i] = 1;
             }
             else {
                d[i] = N;

                for (int j = i & (i - 1); j > 0; j = (j - 1) & i) {
                    if (d[j] + d[i ^ j] < d[i]) {
                        d[i] = d[j] + d[i ^ j];
                    }
                }
             }
        }

        printf ("%d\n", d[(1 << N) - 1]);
    }

    return 0;
}