Cod sursa(job #838158)

Utilizator superman_01Avramescu Cristian superman_01 Data 19 decembrie 2012 00:31:10
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<vector>

int n,a[50005],c[10005],k,Vmax;
unsigned int v[10005];
void generare()
{
	int i;
	std::scanf("%d",&n);
	for(i=1;i<=n;i++)
		std::scanf("%d",&v[i]);
	std::fclose(stdin);
    	
}
void rezolvare()
{
	
	int i,j;
	
	std::sort(v+1,v+n+1);
	
	if(v[1]==1)
	{
		c[++k]=1;
		return ;
		
	}
	Vmax=v[n];
	
	
	for(i=1;i<=n;i++)
    {
		if(a[v[i]]==0)
	{    
		c[++k]=v[i];
	}
		
	for(j=v[i];j<=Vmax;j+=v[i])
			if(a[j]==0)
		{
			a[v[i]+j]=1;
	       	
		}
			
	}
	
	return ;
}
void afisare()
{
	int i;
	
	std::printf("%d",k);
	std::printf("\n");
	
	for(i=1;i<=k;i++)
        {
			std::printf("%d",c[i]);
			std::printf("\n");
	}
	
	std::fclose(stdout);
}

int main()
{
	std::freopen("economie.in","r",stdin);
	std::freopen("economie.out","w",stdout);
	generare();
	rezolvare();
	afisare();
    return 0;
}