Cod sursa(job #3173636)

Utilizator Bianca2507Negret Bianca Bianca2507 Data 23 noiembrie 2023 14:33:37
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>

using namespace std;
ifstream cin("zebughil.in");
ofstream cout("zebughil.out");
int n,v[18],t,G,s1;
struct numar
{
    int g,c;
} d[(1<<18)];
int main()
{
    t=3;
    ///d[i].g=greutatea a i blocuri
    ///d[i].c=nr minim de camioane
    while(t--)
    {
        cin>>n>>G;
        for(int i=0; i<n; i++)
            cin>>v[i];
        for(int i=0; i<(1<<n); i++)
        {
            d[i].c=2e9;
            d[i].g=0;
        }
        d[0].c=1;
        d[0].g=0;
        for(int s=1; s<(1<<n); s++)
            for(int i=0; i<n; i++)
                if(s&(1<<i))
                {
                    s1=s-(1<<i);
                    if(d[s1].g+v[i]<=G)
                    {
                        if(d[s].c>d[s1].c||(d[s].c==d[s1].c &&d[s1].g+v[i]<=d[s].g))
                        {
                            d[s].c=d[s1].c;
                            d[s].g=d[s1].g+v[i];
                        }
                    }
                    else
                    {
                        if(d[s].c>d[s1].c+1||(d[s].c==d[s1].c+1&&d[s].g>v[i]))
                        {
                            d[s].g=v[i];
                            d[s].c=d[s1].c+1;
                        }
                    }
                }
        cout<<d[(1<<n)-1].c<<'\n';
    }
    return 0;
}