Cod sursa(job #110589)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 26 noiembrie 2007 23:30:01
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>
#include <stdlib.h>
int a[2001], n, sol[2001], 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;
	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 = a[n-1]; k >= 1; k--)
				if (v[k])
				{
					j=1;
					while (k + (a[i] * j) <= a[n-1])  v[k + (a[i] * j)] = 1, j++;
				}
		}
	}

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