Cod sursa(job #748571)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 13 mai 2012 20:06:33
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<iostream>
#include<fstream>
using namespace std;

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

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

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

int main() {
	int i,q,k,j;
	
	in >> n >> g;
	
	for(i = 1; i<=n; ++i) {
		in >> q;
		
		ap[q]++;
	}
	
	v[0] = 1;
	
	for(i = 200; i; --i) if(ap[i])
		for(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);
	
	out << i << " " << v[i] - 1 << "\n";
	
	for(; i!=0; i -= t[i])
		out << t[i] << "\n";
	
	return 0;
}