Cod sursa(job #2334231)

Utilizator TheNextGenerationAyy LMAO TheNextGeneration Data 2 februarie 2019 13:15:08
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("zebughil.in");
ofstream out("zebughil.out");
const int N = 18;
int v[N],dp[1<<N][N];
int main()
{
    int t = 3;
    while (t--)
    {
        int n;
        long long g;
        in >> n >> g;
        for (int i = 0; i<(1<<n); i++)
            for (int j = 0; j<=n; j++)
                dp[i][j] = -1;
        for (int i = 0; i<n; i++)
            in >> v[i];
        dp[0][0] = 0;
        for (int i = 0; i<(1<<n); i++)
            for (int j = 0; j<=n; j++)
                if (dp[i][j]!=-1)
                    for (int k = 0; k<n && i+(1<<k)<=(1<<n); k++)
                        if ((i&(1<<k)) == 0)
                        {
                            int l = i+(1<<k);
                            if (dp[i][j]>=v[k])
                                dp[l][j] = max(dp[l][j],dp[i][j]-v[k]);
                            else
                                dp[l][j+1] = g-v[k];
                        }
        for (int i = 0; i<=n; i++)
            if (dp[(1<<n)-1][i]!=-1)
            {
                out << i << "\n";
                break;
            }
    }
}