Cod sursa(job #657659)

Utilizator Catah15Catalin Haidau Catah15 Data 6 ianuarie 2012 23:21:48
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>

using namespace std;

#define PB push_back
#define VMAX 50005
#define maxN 1005

bool v[VMAX];
int A[maxN];
vector <int> sol;


int main()
{
	freopen ("economie.in", "r", stdin);
	freopen ("economie.out", "w", stdout);
	
	int N;
	
	scanf ("%d", &N);
	
	for (int i = 1; i <= N; ++ i) scanf ("%d", &A[i]);
	
	sort (A + 1, A + N + 1);
	
	for (int i = 1; i <= N; ++ i)
	{
		int nr = A[i];
		
		if (v[nr]) continue;
		
		sol.PB (nr);
		
		v[nr] = true;
		
		for (int i = nr + 1; i <= VMAX; ++ i) if (v[i - nr]) v[i] = true;
	}
	
	printf ("%d\n", sol.size());
	
	for (unsigned int i = 0; i < sol.size(); ++ i) printf ("%d\n", sol[i]);
	
	return 0;
}