Cod sursa(job #1898339)

Utilizator SenibelanMales Sebastian Senibelan Data 1 martie 2017 22:39:02
Problema Economie Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 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 maxi;

vector <int> sol;


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]]){
            sol.push_back(i);
            for(int j = 1; j <= maxi; ++j){
                if(S[j])
                    S[j + v[i]] = 1;
                else if(j % v[i] == 0)
                    S[j] = 1;
            }
        }
    }
}

void Print(){
    int sz = sol.size();
    out << sz << "\n";
    for(int i = 0; i < sz; ++i)
        out << v[sol[i]] << " ";
    out << "\n";
}

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