Cod sursa(job #111818)

Utilizator snaked31Stanica Andrei snaked31 Data 1 decembrie 2007 22:53:04
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#include <algorithm>
#include <vector>

using namespace std;

#define nm 50010
#define pb push_back

int v[nm], u[nm];
int n, i, sol, j;
vector <int> s;


void read()

{
	scanf("%d ", &n);
	for (i=1; i<=n; ++i)
	{
		scanf("%d ", &v[i]);
	}
}


void solve()

{
	sort(v+1, v+n+1);
	sol = 0;
	for (i=1; i<=n; ++i)
	{
		if (u[v[i]] == 0)
		{
			++sol;
			s.pb(v[i]);
			u[v[i]] = 1;
			for (j=1; j<=v[n]; ++j)
			{
				if (u[j] != 0 && (j + v[i]) <= v[n])
				{
					u[j+v[i]] = 1;
				}
			}
		}
	}
}


void write()

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


int main()

{
	freopen("economie.in", "r", stdin);
	freopen("economie.out","w",stdout);
	
	read();
	solve();
	write();

	return 0;
}