Cod sursa(job #3280810)

Utilizator Manolea_Teodor_StefanManolea Teodor Stefan Manolea_Teodor_Stefan Data 27 februarie 2025 16:10:32
Problema Economie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
//#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")


using namespace std;

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

using dbl = double;
using ll = long long;
using ull = unsigned long long;

const int nmax = 1e5 + 1;
const int mod = 1e9 + 7;

int n;
vector<int> coins;
bool dp[nmax];
set<int> ans;
int main() {
    fin >> n;
    coins.resize(n);
    for (auto& coin : coins) {
        fin >> coin;
    }
    sort(coins.begin(),coins.end());
    dp[0] = 1;
    for (const auto coin : coins) {
        if (!dp[coin]) {
            ans.insert(coin);
        }
        for (int i = 0; i <= 50000; i++) {
            if (dp[i] and i + coin <= 50000) {
                dp[i + coin] = true;
            }
        }
    }
    fout << ans.size() << '\n';
    for (auto coin : ans) {
        fout << coin << ' ';
    }

    return 0;
}