Cod sursa(job #110607)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 26 noiembrie 2007 23:59:58
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#include <stdlib.h>
int a[1001], n, sol[1001], nr, v[55000];

int cmp(const void *a, const void *b)
{
	return *(int*)a - *(int*)b;
}

int main()
{
	freopen("economie.in","r",stdin);
	freopen("economie.out","w",stdout);
	int i, j, k;
	scanf("%d",&n);
	for (i = 0; i < n; i++) scanf("%d", &a[i]);

	qsort(a, n, sizeof(int), cmp);

	sol[++nr] = a[0];
	j=1;
	v[0] = 1;
	while (a[0] * j <= a[n - 1]) v[a[0] * j] = 1, j++;

	for (i=1; i < n; i++)
	{
		if (!v[a[i]])
		{
			sol[++nr] = a[i];
			for (k = 0; k < a[n-1]; k++)	if (v[k] && k+a[i] <=a [n-1]) v[k+a[i]] = 1;
		}
	}

	printf("%d\n",nr);
	for (i = 1; i <= nr; i++) printf("%d\n",sol[i]);
	return 0;
}