Cod sursa(job #1317756)

Utilizator nicolaegutaNicolae Guta nicolaeguta Data 15 ianuarie 2015 09:39:29
Problema Zebughil Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#include <algorithm>
#define INF 2000000000

using namespace std;

int n,G,dp[1000000],s[1000000],g[100];

inline int memo(int stare)
{
    if(dp[stare]!=-1) return dp[stare];
    int x;
    dp[stare]=INF;
    for(x=stare;x>0;x=((x-1)&stare))
        if(s[x]<=G)
            dp[stare]=min(dp[stare],1+memo(stare-x));
    return dp[stare];
}

int main()
{
    int T,i,j;
    freopen ("zebughil.in","r",stdin);
    freopen ("zebughil.out","w",stdout);
    for(T=1;T<=3;++T) /// aici
    {
        scanf("%d%d", &n,&G);
        for(i=1;i<=n;++i) scanf("%d", &g[i]);
        for(i=1;i<(1<<n);++i)
        {
            dp[i]=-1;
            for(j=1;j<=n;++j)
                if((1<<(j-1))&i) break;
            s[i]=s[(i&(i-1))]+g[j];
        }
        printf("%d\n", memo((1<<n)-1));
    }
    return 0;
}