Cod sursa(job #1687428)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 12 aprilie 2016 21:02:40
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int trans, G,i, n, g[20],j, d[20][140000];

int main()
{
    freopen("zebughil.in", "r", stdin);
    freopen("zebughil.out", "w", stdout);

int t=3;
while(t--)
{
    scanf("%d%d", &n, &G);
    for(i=0; i<n; ++i) scanf("%d", &g[i]);

    for(trans=0; trans<=n; ++trans)
    for(i=1; i<(1<<n); ++i)
    d[trans][i]=-1;

    for(trans=1; trans<=n; ++trans)
    for(i=1; i<(1<<n); ++i)
    {
        for(j=0; j<n; ++j)
            if(i&(1<<j))
            {
                if(d[trans-1][i^(1<<j)]!=-1) d[trans][i]=max( d[trans][i], G-g[j]);
                else if(d[trans][i^(1<<j)]>=g[j])
                    d[trans][i]=max( d[trans][i], d[trans][i^(1<<j)]- g[j]);
            }
    }
    trans=1;
    n=(1<<n)-1;
    while(d[trans][n]==-1) ++trans;

    printf("%d\n", trans);
}

return 0;
}