Cod sursa(job #3163054)

Utilizator dragoncrackCandidatu Mario Luca dragoncrack Data 30 octombrie 2023 14:19:15
Problema Economie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <algorithm>
#define limit 50000
#define DIM 1001

using namespace std;

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

int n;
int sol;
int solList[DIM];
int v[DIM];
bool sums[limit + 1];

void addSums(int value) {
    for (int i = 0; i <= limit - value; i++) {
        if (sums[i]) {
            for (int j = i + value; j <= limit; j += value) {
                if (sums[j])
                    break;
                sums[j] = true;
            }
        }
    }
}

int main()
{
    sums[0] = true;
    fin >> n;
    for (int i = 1; i <= n; i++) {
        fin >> v[i];
    }
    sort(v + 1, v + n + 1);
    for (int i = 1; i <= n; i++) {
        if (!sums[v[i]]) {
            solList[++sol] = v[i];
            addSums(v[i]);
        }
    }
    fout << sol;
    for (int i = 1; i <= sol; i++) {
        fout << "\n" << solList[i];
    }
}