Cod sursa(job #1758925)

Utilizator LegionHagiu Stefan Legion Data 18 septembrie 2016 06:03:16
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
bool hv[50001];
bool cm[50001];
vector<int> sol;
void rez()
{
	int i,j;
	for (i = 1; i <= 50000; i++)
	{
		if (hv[i])
		{
			if (cm[i] == 0)
			{
				sol.push_back(i);
				if (2 * i <= 50000)
				{
					cm[i] = 1;
					cm[2 * i] = 1;
				}
				for (j = 1; j <= 50000; j++)
				{
					if (cm[j] == 1)
					{
						if (j + i <= 50000)
						{
							cm[j + i] = 1;
						}
					}
				}
			}
		}
	}
}
int main()
{
	ifstream in("economie.in");
	ofstream out("economie.out");
	int x,i,n;
	in >> n;
	for (i = 1; i <= n; i++)
	{
		in >> x;
		hv[x] = 1;
	}
	rez();
	out << sol.size() << "\n";
	for (i = 0; i < sol.size(); i++)
	{
		out << sol[i] << "\n";
	}
	return 0;
}