Cod sursa(job #1670180)

Utilizator SilviuIIon Silviu SilviuI Data 31 martie 2016 15:31:18
Problema Zebughil Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

int n,g;
int t[20],dp[1<<17+10];

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

    for (int o=1;o<=3;o++) {
        scanf("%d %d",&n,&g);

        for (int i=1;i<=n;i++) scanf("%d",&t[i]);

        for (int i=0;i<(1<<n);i++) dp[i]=n;

        dp[0]=0;

        for (int i=0;i<(1<<n);i++) {

            int sum=0;
            for (int j=0;j<n;j++)
                if (((i>>j)&1)==1) sum+=t[j+1];

            if (sum<=g) dp[i]=1; else
            {
                for (int j=(i-1)&i;j>0;j=(j-1)&i)
                    dp[i]=min(dp[i],dp[j]+dp[j^i]);
            }
        }

        printf("%d\n",dp[(1<<n)-1]);
    }

    return 0;
}