Cod sursa(job #3345071)

Utilizator Gabriel_DaescuDaescu Gabriel Florin Gabriel_Daescu Data 7 martie 2026 20:29:28
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <vector>
#define NMAX 17
using namespace std;
ifstream  fin("zebughil.in");
ofstream fout("zebughil.out");
int N,G,z[NMAX];
vector<pair<int,int>> dp(1<<NMAX);

void citire()
{
    fin>>N>>G;

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

int main()
{
    for(int q=1; q<=3; q++)
    {
        citire();

        for(int i=0; i<(1<<N); i++)
        {
            dp[i].first=N+1;
            dp[i].second=0;
        }

        dp[0]={1,0};
        for(int masca=0; masca<(1<<N); masca++)
        {
            for(int i=0; i<N; i++)
            {
                if(!(masca&(1<<i)))
                {
                    if(dp[masca].second+z[i]>G)
                    {
                        dp[masca|(1<<i)]=min(dp[masca|(1<<i)],{dp[masca].first+1,z[i]});
                    }
                    else
                    {
                        dp[masca|(1<<i)]=min(dp[masca|(1<<i)],{dp[masca].first,dp[masca].second+z[i]});
                    }
                }
            }
        }

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


    return 0;
}