Cod sursa(job #414210)

Utilizator titusuTitus C titusu Data 9 martie 2010 20:31:44
Problema Economie Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
using namespace std;
#include <fstream>
#include <iostream>
#include <algorithm>
#include <cassert>
int v[50005], n ,Max, c[1001], nc;

int main(){
	ifstream fin("economie.in");
	fin>>n;
	for(int i=1;i<=n;++i){
		int x;
		fin>>x;
		v[x]=1;
		if(x>Max)
			Max=x;
	}
	v[0]=2;
	for(int i=1;i<=Max;++i)
		if(v[i]==1){
			c[++nc]=i;
			for(int j=0;j<=Max;++j)
				if(v[j]==2)
					for(int k=1;j+i*k<=Max;++k)
						if(v[j+i*k]==1)
							v[j+i*k]=2;
		}
	for(int i=1;i<=Max;++i)
		assert(v[i]!=1);
		
	ofstream fout("economie.out");
	fout<<nc<<"\n";
	for(int i=1;i<=nc;++i)
		fout<<c[i]<<"\n";
	fout.close();
	return 0;
}