Cod sursa(job #3172783)

Utilizator Cazacu2006RazvanRazvan Cazacu Cazacu2006Razvan Data 21 noiembrie 2023 11:07:32
Problema Zebughil Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>

using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int n,g,v[25],d[300001];
void solve()
{
    fin>>n>>g;
    for(int i=0;i<n;i++){
        fin>>v[i];
        d[(1<<(i-1))]=1;
    }
    int mers=(1<<n)-2;
    for(int i=1;i<=mers+1;i++){
        if(d[i]==0)
        d[i]=n+1;

    }

    for(int i=1;i<=mers;i++)
    {
        int s=0;

        for(int p=0;p<n;p++)
        {
            if((i>>p)&1)
                s+=v[p];
        }



        for(int p=0;p<n && i+(1<<p)<=mers+1;p++)
        {

            if(!((i>>p)&1))
            {

                if(v[p]+s<=g)
                    d[i+(1<<p)]=1;
                d[i+(1<<p)]=min(d[i+(1<<p)],d[i]+d[(1<<p)]);
            }

        }
    }
    for(int i=1;i<=mers;i++)
    {

        d[(1<<n)-1]=min(d[(1<<n)-1],d[i]+d[(1<<n)-1-i]);
    }
    fout<<d[(1<<n)-1]<<"\n";

}
int main()
{
    for(int p=1;p<=3;p++)
        solve();

    return 0;
}