Cod sursa(job #969520)

Utilizator antonioteoZait Teodor Antonio antonioteo Data 4 iulie 2013 15:35:16
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

#define NMAX 1001
#define VMAX 50000

int i, j, N;

int v[NMAX];
bool Used[VMAX * 2];

vector <int> Solution;
vector <int> :: iterator it;

int main() {
	freopen("economie.in","r",stdin);
	freopen("economie.out","w",stdout);
	scanf("%i", &N);
	for (i = 1; i <= N; ++i) 
		scanf("%i", &v[i]);
	sort(v + 1, v + N + 1);
	for (i = 1; i <= N; ++i) {
		if (!Used[v[i]]) {
			Used[v[i]] = true;
			Solution.push_back(v[i]);
			for (j = 0; j <= VMAX; ++j) {
				if (Used[j])
					Used[j + v[i]] = true;
			}
		}
	}
	printf("%i\n", Solution.size());
	for (it = Solution.begin(); it != Solution.end(); ++it)
		printf("%i\n", *it);
	return 0;
}