Cod sursa(job #2847120)

Utilizator Theo20067Cismaru Theodor-Alexe Theo20067 Data 10 februarie 2022 11:51:31
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("zebughil.in");
ofstream fout("zebughil.out");
struct punct{
    int v,f;
}D[140001];
long long V[18],n,gmax,bit,l,i,j,k;
int main()
{
    D[0].v=1;
    D[0].f=0;
    for(l=1;l<=3;l++)
    {
        fin>>n>>gmax;
        for(i=1;i<=n;i++)
            fin>>V[i];
        for(i=1;i<(1<<n);i++)
        {
            D[i].v=n+1;
            D[i].f=0;
        }
        for(i=1;i<(1<<n);i++)
        {
            for(j=0;j<n;j++)
            {
                if(((i>>j)&1)==1)
                {
                    k=i-(1<<j);
                    if(D[k].v!=n+1)
                    {
                        ///incerc sa adaug la acelasi transport
                        if(D[k].f+1LL*V[j+1]<=gmax)
                        {
                            if(D[i].v>D[k].v||D[i].v==D[k].v&&D[i].f>D[k].f+V[j+1])
                            {
                                D[i].v=D[k].v;
                                D[i].f=D[k].f+V[j+1];
                            }
                        }
                        else
                        {
                            /// trebuie sa initiez un nou transport
                            if(D[i].v>D[k].v+1||D[i].v==D[k].v+1&&D[i].f>V[j+1])
                            {
                                D[i].v=D[k].v+1;
                                D[i].f=V[j+1];
                            }

                        }
                    }
                }
            }

        }
        fout<<D[(1<<n)-1].v<<"\n";
    }
}