Cod sursa(job #605951)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 2 august 2011 23:27:13
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>
#include<algorithm>
#define NMAX 50010
#define MMAX 

using namespace std;

bool vz[NMAX];
int a[NMAX], b[NMAX], m=0, n;

ifstream f("economie.in");
ofstream g("economie.out");

void Citeste()
{
	int i;
	f>>n;
	for (i=1; i<=n; ++i) f>>a[i];
}

void Rezolva()
{
	int i, j;
	
	m=1; b[1]=a[1];
	
	vz[0]=vz[a[1]]=1;
	for (j=0; j<=50000; j+=a[1]) vz[j]=1;
	
	for (i=2; i<=n; ++i)
		if (!vz[a[i]])
		{
			b[++m]=a[i];
			for (j=0; j<=50000; j+=a[i]) vz[j]=1;
			for (j=0; j<50000; ++j)
				if (vz[j])
					if (j+a[i]<=50000) vz[j+a[i]]=1;
		}
	g<<m<<"\n";
	for (i=1; i<=m; ++i) g<<b[i]<<"\n";
}

int main()
{
	Citeste();
	
	sort(a+1, a+n+1);
	
	Rezolva();
	
	f.close();
	g.close();
	return 0;
}