Cod sursa(job #1775909)

Utilizator giotoPopescu Ioan gioto Data 10 octombrie 2016 19:58:27
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int n, a[2002], Sol[2002];
bool f[200002];
int main()
{
    freopen("economie.in", "r", stdin);
    freopen("economie.out", "w", stdout);
    scanf("%d", &n);
    for(int i = 1; i <= n ; ++i)
        scanf("%d", & a[i]);
    sort(a + 1, a + n + 1);
    int NR = 0;
    Sol[++NR] = a[1];
    for(int i = a[1]; i <= a[n] ; i += a[1])
        f[i] = 1;
    for(int i = 2; i < n ;++i){
        if(f[a[i]] == 0){
            Sol[++NR] = a[i];
            f[a[i]] = 1;
            for(int j = a[1]; j <= a[n] - a[1]; ++j)
                if(f[j] == 1 && f[j + a[i]] == 0)
                    f[j + a[i]] = 1;
        }
    }
    printf("%d\n", NR);
    for(int i = 1; i <= NR; ++i)
        printf("%d ", Sol[i]);
    return 0;
}