Cod sursa(job #689776)

Utilizator ion_calimanUAIC Ion Caliman ion_caliman Data 24 februarie 2012 20:17:49
Problema Ghiozdan Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");

#define NMAX 20010
#define GMAX 75010

int A[200];
int Elem[GMAX];
int Nr[GMAX];
int N, G;

int main()
{
    int i, j, k, x;
    f >> N >> G;
    for (i=1; i<=N; i++) f >> x, A[x]++;
    Elem[0] = 1;
    for (i=200; i>0; i--){
        if (A[i]){
            for (j=G-i; j>=0; j--){
                if (Elem[j]){
                    for (k=1; k<=A[i] && j+k*i<=G && !Elem[j+k*i]; k++){
                            Elem[j+k*i] = i;
                            Nr[j+k*i] = Nr[j] + k;
                    }
                }
            }
        }
    }
    for (i=G; !Elem[i]; i--);
    g << i << ' ' << Nr[i] << '\n';
    for (; i; i-=Elem[i]) g << Elem[i] << '\n' ;
}