Cod sursa(job #2768263)

Utilizator DragosC1Dragos DragosC1 Data 9 august 2021 23:45:49
Problema Economie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <algorithm>
using namespace std;

int dp[50001];
int n;
int a[1001];

void read() {
    int i;
    ifstream f("economie.in");
    f >> n;
    for (i = 1; i <= n; i++)
        f >> a[i];
    f.close();
}

int nr;
int sol[1001];

void solve() {
    int i, j;
    bool ok;
    sort(a + 1, a + n + 1);
    dp[0] = 1;
    for (i = 1; i <= n; i++) {
        if (!dp[a[i]]) {
            ok = 1;
            for (j = 1; j <= 50000; j++) {
                if (j - a[i] >= 0)
                    dp[j] = dp[j] | dp[j - a[i]];
                ok = ok & dp[j];
            }
            sol[++nr] = a[i];
            if (ok) break;
        }
    }
}

void output() {
    int i;
    ofstream g("economie.out");
    g << nr << '\n';
    for (i = 1; i <= nr; i++)
        g << sol[i] << '\n';
    g.close();
}

int main() {
    read();
    solve();
    output();
    return 0;
}