Cod sursa(job #427652)

Utilizator mihai995mihai995 mihai995 Data 28 martie 2010 11:44:27
Problema Ghiozdan Scor 6
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <fstream>
using namespace std;
int g[1<<17],v[1<<15];

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