Cod sursa(job #3323228)

Utilizator BuzdiBuzdugan Rares Andrei Buzdi Data 17 noiembrie 2025 19:47:15
Problema Economie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

#define ll long long
#define cin fin
#define cout fout

using namespace std;

ifstream fin("economie.in");
ofstream fout("economie.out");

const int NMAX = 1000;
const int WMAX = 50000;
const int INF = 1e9;

int n;
int a[NMAX + 1];
bool dp[WMAX + 1];
vector<int> answer;

int main() {
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    sort(a + 1, a + n + 1);

    dp[0] = 1;
    for(int i = 1; i <= n; i++) {
        if(!dp[a[i]]) {
            answer.push_back(a[i]);
            for(int j = 0; j + a[i] <= WMAX; j++) {
                if(dp[j]) {
                    dp[j + a[i]] = 1;
                }
            }
        }
    }

    cout << answer.size() << '\n';
    for(int x : answer) {
        cout << x << '\n';
    }
    return 0;
}