Cod sursa(job #1308172)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 3 ianuarie 2015 18:18:45
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#include<algorithm>

using namespace std;

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

const int kmax = 1000;
const int nmax = 50000;
int a[ kmax ], s[ kmax ];
bool d[ nmax + 1 ];

int main() {
    int n, m, ans;
    fin >> n;
    m = 0;
    for( int i = 0; i < n; ++ i ) {
        fin >> a[ i ];
        m = m < a[ i ] ? a[ i ] : m;
    }
    sort( a, a + n );
    ans = 0;
    d[ 0 ] = 1;
    for( int i = 0; i < n; ++ i ) {
        if ( d[ a[ i ] ] == 0 ) {
            s[ ans ++ ] = a[ i ];
            for( int j = 0; j <= m - a[ i ]; ++ j ) {
                if ( d[ j ] ) {
                    d[ j + a[ i ] ] = 1;
                }
            }
        }
    }
    fout << ans << "\n";
    for( int i = 0; i < ans; ++ i ) {
        fout << s[ i ] << "\n";
    }
    fin.close();
    fout.close();
    return 0;
}