Cod sursa(job #785327)

Utilizator danalex97Dan H Alexandru danalex97 Data 8 septembrie 2012 13:52:18
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const int N = 202;
const int M = 75010;

int n, g, ap[N];
int v[M], t[M];

int main() 
{
	int i,q,k;
	
	F >> n >> g;
	
	for(i = 1; i<=n; ++i) {
		F >> q;
		
		ap[q]++;
	}
	
	v[0] = 1;
	
	for (int i = 200; i; --i) 
		if( ap[i] )
			for (int j = g - i; j>=0; --j) 
				if( v[j] )
					for(k = 1; k<=ap[i] && !v[j + k * i] && j + k*i <= g; ++k) 
						v[j + k*i] = v[j] + k, t[j + k*i] = i;
	
	for(i = g; !v[i]; --i);
	
	G << i << " " << v[i] - 1 << "\n";
	
	for(; i!=0; i -= t[i])
		G << t[i] << "\n";
	
	return 0;
}