Cod sursa(job #2333604)

Utilizator triscacezarTrisca Vicol Cezar triscacezar Data 1 februarie 2019 15:58:36
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("zebughil.in");
ofstream gi("zebughil.out");

int n,g,i,j,a[20],dyn[(1<<17)+10],lft[(1<<17)+10];

int main()
{
    for(int t=1;t<=3;t++)
    {
        f>>n>>g;
        for(i=1;i<=n;i++)
            f>>a[i];
        memset(dyn, 127,sizeof(dyn));
        memset(lft,-128,sizeof(lft));
        int x=(1<<n);
        dyn[0]=lft[0]=0;
        for(i=1;i<x;i++)
            for(j=0;j<n;j++)
                if(i&(1<<j))
                {
                    int wher=i^(1<<j);
                    if(lft[wher]>=a[j+1])
                        if(dyn[i]>dyn[wher]||(dyn[i]==dyn[wher]&&lft[i]<lft[wher]-a[j+1]))
                            dyn[i]=dyn[wher],lft[i]=lft[wher]-a[j+1];
                        else;
                    else
                        if(dyn[i]>=dyn[wher]+1)
                            dyn[i]=dyn[wher]+1,lft[i]=g-a[j+1];
                }
        gi<<dyn[x-1]<<'\n';
    }
    return 0;
}