Cod sursa(job #1236518)

Utilizator EpictetStamatin Cristian Epictet Data 2 octombrie 2014 01:14:21
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
using namespace std;
ifstream fin ("zebughil.in");
ofstream fout ("zebughil.out");
int N, G, P[20], V[1<<18];

int main()
{
    for (int k=1; k<=3; k++)
    {
        fin >> N >> G;
        for (int i=1; i<=N; i++) fin >> P[i];
        for (int i=1; i<=1<<N; i++)
            V[i] = -1;

        V[0] = G;
        for (int nrc=1; nrc<=N;)
        {
            for (int j=1; j<1<<N; j++)
            {
                if (V[j] >= 0) V[j] = G;
                else
                {
                    for (int i=1; i<=N; i++)
                    {
                        if (j & (1 << (i-1))) V[j] = max (V[j], V[j - (1 << (i-1))] - P[i]);
                    }
                }
            }
            if (V[(1<<N) - 1] >= 0)
            {
                fout << nrc << '\n';
                nrc = N+1;
            }
            else nrc += 1;
        }
    }

    fout.close();
    return 0;
}