Cod sursa(job #110456)

Utilizator DastasIonescu Vlad Dastas Data 26 noiembrie 2007 19:51:26
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <algorithm>

const int maxn = 1001;
const int maxval = 50005;

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] ] && !fol[ a[i] - answ[cnt] ] )
        {
            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;
            }
        }
    }

    fprintf(out, "%d\n", cnt);
    for ( int i = 1; i <= cnt; ++i )
        fprintf(out, "%d\n", answ[i]);

	return 0;
}