Cod sursa(job #2669471)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 7 noiembrie 2020 06:59:16
Problema Zebughil Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>

using namespace std;

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

const int inf = 1e9;
int n, g, v[20];

int main(){
    for (int t = 1; t <= 3; ++t){
        fin >> n >> g;
        for (int i = 1; i <= n; ++i){
            fin >> v[i];
        }
        int p = (1 << n) - 1;
        vector <vector <int> > dp(1 << n + 2);
        for (int i = 0; i <= p; ++i) dp[i].resize(g + 3);
        for (int i = 1; i <= g; ++i) dp[0][i] = 1;
        for (int i = 1; i <= p; ++i){
            for (int j = 0; j <= g; ++j){
                if (j != 0)
                    dp[i][j] = 1 + dp[i][0];
                else
                    dp[i][j] = inf;
                for (int k = 0; k < n; ++k){
                    if ((i >> k) & 1){
                        if (j + v[k + 1] <= g){
                            dp[i][j] = min(dp[i][j], dp[i - (1 << k)][j + v[k + 1]]);
                        }
                    }
                }
            }

        }
        fout << dp[p][0] << "\n";
    }
    fout.close();
    fout.close();
    return 0;
}