Cod sursa(job #3172703)

Utilizator Robert_MitriRobert Mitri Robert_Mitri Data 21 noiembrie 2023 09:19:24
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include  <fstream>
#include <cstring>
#include <climits>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
const long long INF = UINT_MAX;

unsigned int n,m;
unsigned int v[18];
unsigned int d[(1<<17)+5][18];

bool get_bit(unsigned int nr,int poz)
{
    return (nr>>poz)&1;
}

void solve()
{

    fin>>n>>m;
    for(int i=0;i<=(1<<n);i++)
        for(int j=1;j<=n;j++)
            d[i][j]=INF;
    for(int i=0;i<n;i++)
        fin>>v[i],d[(1<<i)][1]=v[i];
    for(int i=0;i<(1<<n);i++)
        for(int j=1;j<n;j++)
            if(d[i][j]!=INF)
                for(int x=0;x<n;x++)
                    if(!get_bit(i,x)){
                        if(d[i][j] + v[x] <= m)
                            d[i+(1<<x)][j] = min(d[i+(1<<x)][j],d[i][j]+v[x]);
                        d[i+(1<<x)][j+1]=min(d[i+(1<<x)][j+1],v[x]);
                    }
    for(int i=1;i<=n;i++)
    {
        if(d[(1<<n)-1][i]!=INF){
            fout<<i<<'\n';
            return;
        }
    }




}

int main()
{
    for(int i=1;i<4;i++)
        solve();
}