Cod sursa(job #2945189)

Utilizator indianu_talpa_iuteTisca Catalin indianu_talpa_iute Data 23 noiembrie 2022 16:21:54
Problema Economie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>
#define MAXN 1000
#define MAXV 50010

using namespace std;

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

void read(int& n, int arr[]) {
    fin >> n;
    for (int i = 0; i < n; i++)
        fin >> arr[i];
}

int main() {
    vector<int> solve;
    int n, arr[MAXN], i;
    bitset<MAXV> dp;
    read(n, arr);
    sort(arr, arr + n);
    dp[0] = 1;
    for (i = 0; i < n; i++)
        if (dp[arr[i]] == 0) {
            solve.push_back(arr[i]);

            for (int j = 0; j + arr[i] < MAXV; j++)
                if (dp[j] == 1)
                    dp[j + arr[i]] = true;
        }

    fout << solve.size() << '\n';
    for (auto val: solve)
        fout << val << '\n';
    return 0;
}