Cod sursa(job #470277)

Utilizator mihai995mihai995 mihai995 Data 12 iulie 2010 17:58:26
Problema Ghiozdan Scor 58
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <fstream>
using namespace std;

int v[1<<17],a[1<<8],n,g;

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

void scr(int x)
{
	if (!x)
		return;
	for (int i=200;i;i--)
		if (v[x]-1==v[x-i] && a[i])
		{
			a[i]--;
			scr(x-i);
			out<<i<<"\n";
			break;
		}
}

int main()
{
	int i,j,x;
	in>>n>>g;v[0]=1;
	for (i=1;i<=n;i++)
	{
		in>>x;
		a[x]++;
		for (j=g-x;j>=0;j--)
			if (v[j] && (v[j+x]>v[j]+1 || !v[j+x]))
				v[j+x]=v[j]+1;
	}
	for (i=g;i;i--)
		if (v[i])
			break;
	out<<i<<" "<<v[i]-1<<"\n";
	scr(i);
	return 0;
}