Cod sursa(job #462572)

Utilizator SpiderManSimoiu Robert SpiderMan Data 11 iunie 2010 18:03:32
Problema Economie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
# include <cstdio>

const char FIN[] = "economie.in", FOU[] = "economie.out";
const int MAX = 50000;

int V[MAX + 5];
bool sol[MAX + 5] = { 0 };
int N, X;

int main ()
{
    freopen ( FIN, "r", stdin ) ;
    freopen ( FOU, "w", stdout ) ;

    scanf("%d", &N);

    for (int i = 1; i <= N; ++i)
        scanf("%d", &X), V[X] = sol[i] = 1;


    X = 0;

    for (int i = 1; i <= MAX; ++i)
        if ( V[i] && sol[i] )
        {
            for (int j = i; j <= MAX; ++j)
                sol[ j ] &= sol[ j - i ];
            X++ , V[i]++;
        }



    printf("%d\n", X);

    for (int i = 1; i <= MAX; ++i)
        if ( V[i] > 1 )
            printf("%d\n", i);

    return 0;
}