Cod sursa(job #2334237)

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

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