Cod sursa(job #3331661)

Utilizator uncrownedHojda Adelin uncrowned Data 29 decembrie 2025 18:17:25
Problema Zebughil Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
using namespace std;

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

#define cin fin 
#define cout fout

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    for (int test = 0; test < 3; test++) {
        int n;
        long long G;
        cin >> n >> G;

        vector<long long> v(n);
        for (int i = 0; i < n; i++)
            cin >> v[i];

        vector<pair<int,long long>> dp(1<<n, {n+1, 0});
        dp[0] = {1, 0};

        for (int mask = 0; mask < (1<<n); mask++) {
            for (int i = 0; i < n; i++) {
                if (mask & (1<<i)) continue;

                auto cur = dp[mask];
                int nmask = mask | (1<<i);

                if (cur.second + v[i] <= G) {
                    cur.second += v[i];
                } else {
                    cur.first++;
                    cur.second = v[i];
                }

                if (cur.first < dp[nmask].first ||
                   (cur.first == dp[nmask].first && cur.second > dp[nmask].second)) {
                    dp[nmask] = cur;
                }
            }
        }

        cout << dp[(1<<n)-1].first << '\n';
    }
}