Cod sursa(job #999340)

Utilizator poptibiPop Tiberiu poptibi Data 19 septembrie 2013 22:54:34
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>
#include <algorithm>
using namespace std;

const int NMAX = 1005, SMAX = 50005;

int N, V[NMAX], Is[SMAX], Ans[NMAX];

int main()
{
    freopen("economie.in", "r", stdin);
    freopen("economie.out", "w", stdout);

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

    sort(V + 1, V + N + 1);
    for(int i = 1; i <= N; ++ i)
        if(!Is[V[i]])
        {
            Is[V[i]] = 1;
            Ans[++Ans[0]] = V[i];
            for(int j = 0; j + V[i] < SMAX; ++ j)
                if(Is[j])
                    Is[j + V[i]] = 1;
        }

    printf("%i\n", Ans[0]);
    for(int i = 1; i <= Ans[0]; ++ i)
        printf("%i ", Ans[i]);

    return 0;
}