Cod sursa(job #1508558)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 22 octombrie 2015 18:23:27
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>

#define lint long long int
using namespace std;

int n;
int v[17];

int dp[(1 << 17) + 5];

int main()
{
    ifstream cin("zebughil.in");
    ofstream cout("zebughil.out");

    int t = 3;
    //cin >> t;

    while (t --) {
        int g;
        cin >> n >> g;

        for (int i = 0; i < n; ++ i)
            cin >> v[i];

        int j;
        lint s;
        for (int i = 1; i < (1 << n); ++ i) {
            s = 0;
            for (j = 0; j < n; ++ j)
                if (i & (1 << j))
                    s += v[j];

            if (s <= g)
                dp[i] = 1;
            else {
                dp[i] = n;
                for (j = (i - 1) & i; j; j = (j - 1) & i)
                    if (dp[j] + dp[i ^ j] < dp[i])
                        dp[i] = dp[j] + dp[i ^ j];
            }
        }

        cout << dp[(1 << n) - 1] << '\n';
    }

    cin.close();
    cout.close();
    return 0;
}