Cod sursa(job #1790803)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 28 octombrie 2016 18:45:43
Problema Ghiozdan Scor 54
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>

#define INF 200000000

using namespace std;

ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");

int D[120010], N, G, fr[250], x;
int solutionG, nr;

int main()
{
    fin >> N >> G;

    for(int i = 1; i <= G; i ++)
    {
        D[i] = INF;
    }

    for(int i = 1; i <= N; i ++)
    {
        fin >> x;
        fr[x] ++;
    }

    for(int i = 200; i >= 1; i --)
    {
        if(fr[i] == 0)
        {
            continue;
        }

        for(int j = G; j >= 0; j --)
        {
            if(D[j] != INF)
            {
                for(int k = 1; k <= fr[i] && j + i * k <= G; k ++)
                {
                    if(D[j + i * k] == INF)
                        D[j + i * k] = D[j] + k;
                }
            }
        }
    }

    for(int i = G; i >= 1; i --)
    {
        if(D[i] != INF)
        {
            solutionG = i;
            nr = D[i];
            break;
        }
    }

    fout << solutionG << " " << nr << '\n';

    return 0;
}