Cod sursa(job #838976)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 20 decembrie 2012 22:53:49
Problema Zebughil Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;

int dp[131085][20],a[20];

int main()
{
    ifstream f("zebughil.in");
    ofstream gg("zebughil.out");
    for(int t=1;t<=3;++t)
    {
        int n,g,p;
        memset(dp,-1,sizeof(dp));

        f>>n>>g;
        for(int i=1;i<=n;++i)
            f>>a[i];
        dp[1][1]=0;
        for(int i=0;i<(1<<n);++i)
        {
            for(int c=1; c<=n ;++c)
            {
                dp[0][c]=0;
                if(dp[i][c]!=-1)
                    for(int j=0;j<n;++j)
                        if(! (( i >> j) & 1) )
                        {
                            int next_config= ( i| 1<<j );

                            if(g>=a[j+1]+dp[i][c])
                                dp[next_config][c]=max( dp[next_config][c],dp[i][c]+a[j+1]);
                            else
                                dp[next_config][1+c]=max(dp[next_config][1+c],a[j+1]);
                        }
            }

        }

        for(p=1;dp[(1<<n)-1][p]==-1;++p);
        gg<<p<<"\n";
    }
    return 0;
}