Cod sursa(job #2717480)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 7 martie 2021 15:00:20
Problema Zebughil Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>

using namespace std;

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

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

int main()
{
    int t = 3;
    while(t--)
    {
        int n, g;
        fin >> n >> g;

        for(int i = 1; i <= n; ++i)
            fin >> v[i];

        for(int msk = 1; msk < (1 << n); ++msk)
        {
            dp[msk] = (1 << 26);
            for(int submask = msk; submask; submask = (submask - 1) & msk)
            {
                long long sum = 0;
                for(int j = 0; j < n; ++j)
                    if((1 << j) & submask)
                    {
                        sum += v[j + 1];
                        if(sum > g)
                            break;
                    }
                if(sum <= g)
                    dp[msk] = min(dp[msk], dp[msk ^ submask] + 1);
            }
        }
        fout << dp[(1 << n) - 1] << '\n';
    }
    return 0;
}