Cod sursa(job #110450)
#include <iostream>
#include <algorithm>
const int maxn = 1001;
const int maxval = 50001;
FILE *in = fopen("economie.in","r"), *out = fopen("economie.out","w");
int n;
int a[maxn];
int fol[maxval];
int answ[maxn];
int main()
{
fscanf(in, "%d", &n);
for ( int i = 1; i <= n; ++i )
fscanf(in, "%d", &a[i]);
std::sort(a+1, a+n+1);
int cnt = 0;
for ( int i = 1; i <= n; ++i )
{
if ( !fol[ a[i] ] )
answ[++cnt] = a[i];
fol[ a[i] ] = 1;
// for ( int j = 2; a[i]+j <= maxval; ++j )
// {
// int k = a[i] + j;
// fol[k] = 1;
//
// while( k + j <= maxval )
// fol[k + j] = 1;
// }
int k = a[i];
while ( k + a[i] < maxval )
fol[k + a[i]] = 1, k += a[i];
}
fprintf(out, "%d\n", cnt);
for ( int i = 1; i <= cnt; ++i )
fprintf(out, "%d\n", answ[i]);
return 0;
}