Cod sursa(job #1148079)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 20 martie 2014 13:44:51
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Lista lui wefgef Marime 0.84 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[NMAX];
int S[GMAX];
int P[GMAX];
int N, G;

int main()
{
    int i, j, k, x;
    f >> N >> G;
    for (i=1; i<=N; i++) f >> x, A[x]++;
    P[0] = 1;
    for (i=200; i>0; i--){
        if (A[i]){
            for (j=G-i; j>=0; j--){
                if (P[j]){
                    for (k=1; k<=A[i] && j+k*i<=G && !P[j+k*i]; k++){
                            S[j+k*i] = i;
                            P[j+k*i] = P[j] + k;
                    }
                }
            }
        }
    }
    for (i=G; !S[i]; i--);
    g << i << ' ' << P[i]-1 << '\n';
    for (; i; i-=S[i]) g << S[i] << '\n' ;
   // fin.close(); fout.close()
    return 0;
}