Cod sursa(job #914438)

Utilizator netedu_andreiFII Andrei Netedu netedu_andrei Data 14 martie 2013 09:30:04
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>

using namespace std;

long i,j,aux,max,tr,n,a[1100],b[1100],c[51000];
int main()
{
    freopen("economie.in","r",stdin);
    freopen("economie.out","w",stdout);
    scanf("%ld",&n);
    for(i=1;i<=n;i++)
        scanf("%ld",&a[i]);
    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
            if(a[i]>a[j]) {
                aux=a[i];
                a[i]=a[j];
                a[j]=aux;
            }

    max=a[n];
    for(i=1;i<=n;i++)
        if(c[a[i]]==0) {
            tr++;
            b[tr]=a[i];
            c[a[i]]=1;
            for(j=1;j<=max-a[i];j++)
                if(c[j]==1) c[j+a[i]]=1;
        }
    printf("%ld\n",tr);
    for(i=1;i<=tr;i++) printf("%ld\n",b[i]);
    return 0;
}