Cod sursa(job #3363849)

Utilizator VladStroicaStroica Vlad Cristian VladStroica Data 24 august 2026 13:33:35
Problema Zebughil Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.81 kb
#include <bits/stdc++.h>

using namespace std;
vector<int>v[(1<<17)];
int v2[(1<<17)];
int lst[20];
signed main()
{
    ifstream cin("zebughil.in");
    ofstream cout("zebughil.out");
    for(int y=0;y<3;y++)
    {
        int n,k;
        cin>>n>>k;
        for(int i=1;i<(1<<17);i++)
        {
            v2[i]=INT_MAX;
            v[i].clear();
        }
        for(int i=0;i<n;i++)
        {
            cin>>lst[i];
            v[(1<<i)].push_back(lst[i]);
        }
        for(int mask=1;mask<(1<<n);mask++)
        {
            for(int j=0;j<n;j++)
            {
                if((1<<j) & mask)
                {
                   int mask2=mask-(1<<j);
                   int ok=0;
                   int pz=INT_MAX;
                   for(auto r:v[mask2])
                   {
                       if(r+lst[j]<=k)
                       {
                           ok++;
                           pz=min(pz,r);
                       }
                   }
                   int cnt=0;
                   if(ok==0)
                    cnt++;
                   if(v2[mask]>v2[mask2]+cnt)
                   {
                       v[mask].clear();
                       v2[mask]=v2[mask2]+cnt;
                       int ok2=0;
                       for(auto r:v[mask2])
                       {
                           if(r==pz && ok2==0)
                           {
                               r+=lst[j];
                               ok2++;
                           }
                           v[mask].push_back(r);
                       }
                       if(ok2==0)
                        v[mask].push_back(lst[j]);
                   }
                }
            }
        }
        cout<<v2[(1<<n)-1]<<'\n';
    }

    return 0;
}