Cod sursa(job #1840435)

Utilizator Mihai_PredaPreda Mihai Dragos Mihai_Preda Data 4 ianuarie 2017 13:59:32
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

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

const int nMax = 1005;
const int vMax = 50005;

int n;
int v[nMax];
bool viz[vMax];
int sol[nMax];
int rasp;
int mx;

void citire()
{
    in >> n;
    for(int i = 1; i <= n; ++i)
    {
        in >> v[i];
        mx = max(mx, v[i]);
    }
    sort(v + 1, v + n + 1);
}

void rezolvare()
{
    viz[0] = true;
    for(int i = 1; i <= n; ++i)
    {
        if(viz[v[i]] == false)
            sol[++rasp] = v[i];
        for(int j = 0; j + v[i] <= mx; ++j)
            if(viz[j] == true)
                viz[j + v[i]] = true;
    }
}

void afisare()
{
    out << rasp << "\n";
    for(int i = 1; i <= rasp; ++i)
        out << sol[i] << "\n";
}

int main()
{
    citire();
    rezolvare();
    afisare();
    return 0;
}