Cod sursa(job #3238773)

Utilizator prares06Papacioc Rares-Ioan prares06 Data 30 iulie 2024 14:35:25
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<bits/stdc++.h>
using namespace std;

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

int main(){
    for(int i = 1; i <= 3; ++i){
        int64_t N, G;
        vector<int64_t> W;
        vector<pair<int64_t, int64_t> > dp;
        fin >> N >> G;

        W.resize(N);
        dp.resize(1 << N, make_pair(N + 1, 0));
        dp[0].first = 1;

        for(int64_t& x : W)
            fin >> x;

        for(int mask = 0; mask < (1 << N); ++mask)
            for(int j = 0; j < N; ++j)
        if(!(mask & (1 << j))){
            if(dp[mask].second + W[j] <= G)
                dp[mask ^ (1 << j)] = min(dp[mask ^ (1 << j)], make_pair(dp[mask].first, dp[mask].second + W[j]));
            else
                dp[mask ^ (1 << j)] = min(dp[mask ^ (1 << j)], make_pair(dp[mask].first + 1, W[j]));
        }

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