Cod sursa(job #2736098)

Utilizator vansJos da pa perete vans Data 3 aprilie 2021 10:24:49
Problema Economie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 1000, NRMAX = 5e4;

int n, a[NMAX + 1], fr[NRMAX + 1];
bool notOk[NRMAX + 1];
set<int> st;

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]), ++fr[a[i]];
    }
    int cnt = 0;
    sort(a + 1, a + n + 1), notOk[0] = 1;
    for(int i = 1; i <= n; ++i)
        if(!notOk[a[i]]) {
            st.insert(i);
            for(int j = 0; j + a[i] <= NRMAX; ++j)
                if(notOk[j]) notOk[j + a[i]] = 1;
        }
    printf("%d\n", (int)st.size());
    for(const auto &el : st) printf("%d\n", a[el]);
    return 0;
}