Cod sursa(job #3172986)

Utilizator Cazacu2006RazvanRazvan Cazacu Cazacu2006Razvan Data 21 noiembrie 2023 17:41:35
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
long long n,g,v[100],d[3000001][3];
void solve()
{

    fin>>n>>g;
    for(int i=0;i<n;i++){
        fin>>v[i];

    }

    long long mers=(1<<n)-2;
    for(int i=1;i<=mers+1;i++){

        d[i][1]=n+1;
        d[i][2]=0;

    }


     d[0][2]=0;
     d[0][1]=1;
    for(int i=1;i<=mers+1;i++)
    {


        for(int p=0;p<n;p++)
        {

            if(i&(1<<p))
            {
                int l=i-(1<<p);
                if(d[l][2]+v[p]<=g)
                {
                    if(d[l][1]<d[i][1] || (d[l][1]==d[i][1] && d[l][2]+v[p]<d[i][2]))
                       {
                           d[i][1]=d[l][1];
                       d[i][2]=d[l][2]+v[p];
                       }
                }
                else if(d[l][1]+1<d[i][1] || (d[l][1]+1<d[i][1] && v[p]<d[i][2]))
                {
                    d[i][1]=d[l][1]+1;
                    d[i][2]=v[p];
                }



            }

        }
    }


    fout<<d[(1<<n)-1][1]<<"\n";

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

    return 0;
}