Cod sursa(job #300286)

Utilizator ooctavTuchila Octavian ooctav Data 7 aprilie 2009 12:44:17
Problema Economie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
// economie.cpp : Defines the entry point for the console application.
//

#include <cstdio>
#include <stdlib.h>

int n;
int e[1001];
int v[50001],valmax;
int solutii[1001],curent=0;
int compar(const void *a,const void *b)
{
	return(*(int*)a-*(int*)b);
}
void citire()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&e[i]);
	qsort(e+1,n,sizeof(int),compar);
	valmax=e[n];
}
void operare()
{
	int i,j,l;
	v[0]=1;
	for(i=1;i<=n;i++)
		if(v[e[i]])
			continue;
		else
		{
			curent++;
			solutii[curent]=e[i];
			for(l=0;l+e[i]<=valmax;l++)
				if(v[l])
					v[l+e[i]]=1;
				
		}

}
int main()
{
	freopen("economie.in","r",stdin);
	freopen("economie.out","w",stdout);
	citire();
	operare();

	printf("%d\n",curent);
	for(int i=1;i<=curent;i++)
		printf("%d\n",e[i]);


	return 0;
}