Cod sursa(job #2768262)

Utilizator DragosC1Dragos DragosC1 Data 9 august 2021 23:43:04
Problema Economie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 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;

void solve() {
    int i, j;
    bool ok;
    sort(a + 1, a + n + 1);
    dp[0] = 1;
    for (i = 1; i <= n; 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];
        }
        if (ok) break;
    }
    nr = i;
}

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

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