Cod sursa(job #832439)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 10 decembrie 2012 17:24:18
Problema Ghiozdan Scor 6
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int Best[75010];
int Ap[210];
int Prec[75010];

int main ()
{
	int N, G, i, j, k;
	
	in >> N >> G;
	
	for (i = 1; i <= N; i ++)
		in >> j, ++ Ap[j];
	
	Best[0] = 1;
	
	for (i = 200; i; i --)
		if (Ap[i])
			for (j = G - i; j >= 0; j --)
				if (Best[j])
					for (k = 1; k <= Ap[i]; k ++)
						if (Best[j + i * k] < Best[j] + k){
							Best[j + i * k] = Best[j] + k;
							Prec[j + i * k] = i;
						}
					
					
	for (i = G; !Best[i]; i --);
	
	out << i << " " << Best[i] - 1 << "\n";
	while (i){
		out << Prec[i] << "\n";
		i -= Prec[i];
	}
	
	return 0;
}