Cod sursa(job #3359261)

Utilizator rares89_Dumitriu Rares rares89_ Data 26 iunie 2026 13:18:18
Problema Zebughil Scor 100
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 long long INF = (1LL << 60);

int n;
long long g, z[20], sum[1 << 17];
int dp[1 << 17];

int main() {
    for(int test = 1; test <= 3; test++) {
        fin >> n >> g;

        int lim = 1 << n;

        for(int i = 0; i < n; i++) {
            fin >> z[i];
        }

        for(int mask = 0; mask < lim; mask++) {
            sum[mask] = 0;
        }

        for(int mask = 1; mask < lim; mask++) {
            int bit = mask & -mask;
            int p = __builtin_ctz(bit);
            sum[mask] = sum[mask ^ bit] + z[p];
        }

        for(int mask = 0; mask < lim; mask++) {
            dp[mask] = n + 1;
        }

        dp[0] = 0;

        for(int mask = 1; mask < lim; mask++) {
            for(int sub = mask; sub; sub = (sub - 1) & mask) {
                if(sum[sub] <= g) {
                    dp[mask] = min(dp[mask], dp[mask ^ sub] + 1);
                }
            }
        }

        fout << dp[lim - 1] << "\n";
    }

    return 0;
}