Cod sursa(job #235803)

Utilizator Mishu91Andrei Misarca Mishu91 Data 25 decembrie 2008 21:50:58
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define MAX_V 50005
#define MAX_N 1005

int V[MAX_N], S[MAX_N];
int N, Nsol;
char viz[MAX_V];

void citire()
{
    scanf("%d",&N);

    for(int i = 1; i <= N; ++i)
        scanf("%d",V+i);
}

void solve()
{
    sort(V+1, V+N+1);

    for(int i = 1; i <= N; ++i)
        if(!viz[V[i]])
        {
            viz[V[i]] = 1;
            S[++Nsol] = V[i];

            for(int j = V[i]+1; j <= MAX_V; ++j)
                if(viz[j - V[i]])
                    viz[j] = 1;
        }
        
    printf("%d\n",Nsol);
    for(int i = 1; i <= Nsol; ++i)
        printf("%d\n",S[i]);
}

int main()
{
    freopen("economie.in","rt",stdin);
    freopen("economie.out","wt",stdout);

    citire();
    solve();
}