Cod sursa(job #462574)

Utilizator SpiderManSimoiu Robert SpiderMan Data 11 iunie 2010 18:06:34
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
# include <cstdio>
# include <bitset>
using namespace std;

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

short V[MAX + 5];
char sol[MAX + 5] = { 1 } ;
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] = 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;
}