Cod sursa(job #110505)

Utilizator tm_raduToma Radu tm_radu Data 26 noiembrie 2007 21:07:41
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>

int n, m, a[1001];
int sol[1001], i, j, k;
int s[50001];

void Qsort(int st, int dr);

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