Cod sursa(job #2772613)

Utilizator Linca_AmaliaLinca Mihaela Amalia Linca_Amalia Data 1 septembrie 2021 20:11:06
Problema Economie Scor 90
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("economie.in");;
ofstream fout("economie.out");
int n, i, k, s[50005], v[1005], sol[1005], f[50005], nr, j;
int main(){
    fin >> n;
    for (i = 1; i <= n; i++){
        fin >> v[i];
        if ( f[ v[i] ] == 0 )
            nr++;
        f[ v[i] ] = 1;
    }
    sort(v + 1, v + n + 1);
    s[0] = 1;
    for (i = 1; i <= n && nr != 0; i++){
        if ( f[ v[i] ] == 0)
            continue;
        for (j = 0; j <= 50000; j++) {
            if (s[j] == 1 && j + v[i] <= 50000) {
                if ( f[ j + v[i] ] == 1 ) {
                    nr--;
                    f[ j + v[i] ] = 0;
                }
                s[j + v[i]] = 1;
            }
        }
        sol[++k] = v[i];
    }
    fout << k << "\n";
    for (int i = 1; i <= k; i++)
        fout << sol[i] << "\n";
    return 0;
}