Cod sursa(job #755117)

Utilizator vendettaSalajan Razvan vendetta Data 4 iunie 2012 18:17:30
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

#define vmax 50005
#define nmax 1005

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

int n, viz[vmax], a[nmax], rez[nmax];

void citeste(){

    f >> n;
    for(int i=1; i<=n; i++) f >> a[i];

    sort(a+1, a+n+1);

}

void rezolva(){

    for(int i=1; i<=n; i++){
        if (viz[a[i]] == 1) continue;
        for(int j=a[i]; j<vmax; j+=a[i]) viz[j] = 1;
        for(int j=1; j<vmax; j++){
            if (viz[j] == 0) continue;
            if (j+a[i] < vmax)viz[j+a[i]] = 1;
        }
        rez[++rez[0]] = a[i];
    }

    g << rez[0] << "\n";
    for(int i=1; i<=rez[0]; i++) g << rez[i] << "\n";

}

int main(){

    citeste();
    rezolva();

    f.close();
    g.close();

    return 0;

}