Cod sursa(job #1106877)

Utilizator diana97Diana Ghinea diana97 Data 13 februarie 2014 12:14:39
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream f ("economie.in");
ofstream g ("economie.out");

int n, nSol, maxim;
int v[1005], sol[1005];
int suma[50005];

void citeste () {
    f >> n;
    for (int i = 1; i <= n; i++) {
        f >> v[i];
        if (v[i] > maxim) maxim = v[i];
    }
}

void rezolva () {
    suma[0] = 1;
    int smax = 0;
    for (int i = 1; i <= n; i++)
        if (suma[v[i]] == 0) {
            nSol++;
            sol[nSol] = v[i];
            smax = maxim - v[i];
            suma[v[i]] = 1;
            for (int j = 1; j <= smax; j++)
                if (suma[j]) suma[j + v[i]] = 1;
            smax += v[i];
        }
}

void scrie () {
    g << nSol << '\n';
    for (int i = 1; i <= nSol; i++)
        g << sol[i] << '\n';
}


int main () {
    citeste ();
    sort (v + 1, v + n + 1);
    rezolva ();
    scrie ();
}