Cod sursa(job #478886)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 20 august 2010 23:19:13
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define file_in "economie.in"
#define file_out "economie.out"

int n,a[1010],viz[51000],sol[1100],maxx;


void citire()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d", &n);
	for (int i=1;i<=n;++i)
	{
		scanf("%d", &a[i]);
		maxx=max(maxx,a[i]);
	}
}

void solve()
{
	int i,nr=0,j;
	sort(a+1,a+n+1);
	viz[0]=1;
	for (i=1;i<=n;++i)
		if (!viz[a[i]])
		{
			sol[++nr]=a[i];
			for (j=0;j<=maxx;++j)
				 if (viz[j] && j+a[i]<=maxx)
					 viz[j+a[i]]=1;
		}
	printf("%d\n", nr);
	for (i=1;i<=nr;++i)
		 printf("%d\n", sol[i]);
}

int main()
{
	citire();
	solve();
	
	fclose(stdin);
	fclose(stdout);
	
	
	return 0;
	
}