Cod sursa(job #3173848)

Utilizator Horia123144Musat Horia Gabriel Horia123144 Data 23 noiembrie 2023 19:56:28
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
long long n,v[20],d[(1<<18)][3],G;
int main()
{
    for(int z=1; z<=3; z++)
    {
        fin>>n>>G;
        for(int i=0; i<n; i++)
            fin>>v[i];
        for(int i=0; i<(1<<n); i++)
        {
            d[i][1]=INT_MAX;
            d[i][2]=0;
        }
        d[0][1]=1;

        for(int i=1; i<(1<<n); i++)
            for(int p=0; p<n; p++)
                if(i&(1<<p))
                {
                    int k=i-(1<<p);
                    if(d[k][2]+v[p]<=G)
                    {
                        if(d[k][1]<d[i][1]||(d[k][1]==d[i][1]&&d[k][2]+v[p]<d[i][2]))
                        {
                            d[i][1]=d[k][1];
                            d[i][2]=d[k][2]+v[p];
                        }
                    }
                    else if(d[k][1]+1<d[i][1]||(d[k][1]+1==d[i][1]&&v[p]<d[i][2]))
                    {
                        d[i][1]=d[k][1]+1;
                        d[i][2]=v[p];
                    }
                }
        fout<<d[(1<<n)-1][1]<<'\n';
    }
    return 0;
}