Cod sursa(job #3356338)

Utilizator rares89_Dumitriu Rares rares89_ Data 31 mai 2026 04:08:50
Problema Economie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

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

int n;
int v[1005];
bool dp[50005];

int main() {
    fin >> n;
    for (int i = 1; i <= n; ++i) {
        fin >> v[i];
    }
    fin.close();

    sort(v + 1, v + n + 1);

    vector<int> ans;
    dp[0] = true;
    
    int max_val = v[n];

    for (int i = 1; i <= n; ++i) {
        if (i > 1 && v[i] == v[i - 1]) continue;
        
        if (!dp[v[i]]) {
            ans.push_back(v[i]);
            for (int j = v[i]; j <= max_val; ++j) {
                if (dp[j - v[i]]) {
                    dp[j] = true;
                }
            }
        }
    }

    fout << ans.size() << "\n";
    for (int i = 0; i < (int)ans.size(); ++i) {
        fout << ans[i] << "\n";
    }

    return 0;
}