Cod sursa(job #3173751)

Utilizator divadddDavid Curca divaddd Data 23 noiembrie 2023 17:33:40
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>
#define pii pair<int, int>
using namespace std;
const int NMAX = 19;
int n,g,z[NMAX];
pii dp[(1<<NMAX)];

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

void minSelf(auto &a, auto b){
    a = min(a, b);
}

int main()
{
    int t = 3;
    while(t--){
        fin >> n >> g;
        for(int i = 1; i <= n; i++){
            fin >> z[i];
        }
        for(int i = 0; i < (1<<n); i++){
            dp[i] = {n+1, 0};
        }
        dp[0] = {1, 0};
        for(int i = 0; i < (1<<n); i++){
            for(int j = 0; j < n; j++){
                int bt = (i>>j)&1;
                if(bt == 0){
                    pii nw = dp[i];
                    if(nw.second+z[j+1] > g){
                        nw.second = z[j+1];
                        nw.first++;
                    }else{
                        nw.second += z[j+1];
                    }
                    minSelf(dp[i|(1<<j)], nw);
                }
            }
        }
        fout << dp[(1<<n)-1].first << "\n";
    }
    return 0;
}