Cod sursa(job #110460)

Utilizator DastasIonescu Vlad Dastas Data 26 noiembrie 2007 19:55:21
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 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] ] )
        {
            answ[++cnt] = a[i];

            fol[ a[i] ] = 1;

            for ( int j = 1; j + a[i] < maxval; ++j )
                fol[j + a[i]] = 1;
        }
    }

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

	return 0;
}