Cod sursa(job #1898326)

Utilizator SenibelanMales Sebastian Senibelan Data 1 martie 2017 22:29:27
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <algorithm>
#include <vector>
#define NMAX 50005

using namespace std;

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

int N, contor;
int v[NMAX];
int S[NMAX];
int sol[NMAX];
int maxi;


void Read(){
    in >> N;
    for(int i = 1; i <= N; ++i)
        in >> v[i];
}

void Solve(){
    sort(v + 1, v + N + 1);
    maxi = v[N];
    for(int i = 1; i <= N; ++i){
        if(!S[v[i]]){
            contor++;
            for(int j = i + 1; j <= maxi; ++j){
                if(S[j])
                    S[j + v[i]] = 1;
                else if(j % v[i] == 0)
                    S[j] = 1;
            }
        }
    }
}

void Print(){
    out << contor << "\n";
    for(int i = 1; i <= N; ++i){
        if(!S[v[i]])
            out << v[i] << " ";
    }
}

int main()
{
    Read();
    Solve();
    Print();
    return 0;
}