Cod sursa(job #206188)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 5 septembrie 2008 12:38:30
Problema Economie Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#include <math.h>

long n, i, v[50001], a[1001], fol[1001], j, o, din[50001];

int main() {
	freopen("economie.in", "r", stdin);
	freopen("economie.out", "w", stdout);
	long max = 0;
	scanf("%ld", &n);
	for (i = 1; i <= n; ++i) {
		scanf("%ld", &a[i]);
		v[a[i]] = 1;
		if (a[i] > max) {
			max = a[i];
		}
	}
	for (i = 1; i <= max; ++i) {
		if (v[i] == 1 && din[i] != 1) {
			din[i] = 1;
			fol[++o] = i;
			for (j = 1; j <= o; ++j) {
				din[i + fol[j]] = 1;
			}
		} else {
			if (din[i] == 1) {
				for (j = 1; j <= o; ++j) {
					din[i + fol[j]] = 1;
				}				
			}
		}
	}
	printf("%ld\n", o);
	for (i = 1; i <= o; ++i) {
		printf("%ld ", fol[i]);
	}
	return 0;
}