Cod sursa(job #1670194)

Utilizator SilviuIIon Silviu SilviuI Data 31 martie 2016 15:41:40
Problema Zebughil Scor 100
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]);

        dp[0]=0;

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

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

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

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

    return 0;
}