Cod sursa(job #1450261)

Utilizator felixiPuscasu Felix felixi Data 12 iunie 2015 10:40:19
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

const int NMAX = 1000;
const int VMAX = 50000;

vector <int> sol;
int b[NMAX+2];
bool v[VMAX+2];
int N;

int main() {
    in >> N;
    v[0] = 1;

    for( int i = 1;  i <= N;  ++i )  in >> b[i];
    sort( b+1, b+N+1 );
    for( int i = 1;  i <= N;  ++i ) {
        if( !v[ b[i] ] ) {
            sol.push_back( b[i] );
            for( int j = 0;  j <= VMAX-b[i];  j++ ) {
                if( v[j] )  v[ j + b[i] ] = 1;
            }
        }
    }

    out << sol.size() << '\n';
    for( int i = 0;  i < (int)sol.size();  ++i )  out << sol[i] << '\n';

    return 0;
}