Cod sursa(job #592559)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 28 mai 2011 23:09:39
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int o[50001],u[50001],v[1001];

int main()
{
    int i,j,n,sol=1;
    freopen("economie.in","r",stdin);
    freopen("economie.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;++i)
        scanf("%d",&v[i]);
    sort(v+1,v+n+1);
    for (i=0;i<=50000;i+=v[1])
        o[i]=1;
    u[v[1]]=1;
    for (i=2;i<=n;++i)
        if (!o[v[i]])
        {
            u[v[i]]=1;
            ++sol;
            for (j=0;j<=50000-v[i];++j)
                if (o[j])
                    o[j+v[i]]=1;
        }
    printf("%d\n",sol);
    for (i=1;i<=50000;++i)
        if (u[i])
            printf("%d\n",i);
    return 0;
}