Pagini recente » Borderou de evaluare (job #1392016) | Borderou de evaluare (job #1557888) | Borderou de evaluare (job #2379963) | Borderou de evaluare (job #3137466) | Cod sursa (job #2501251)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
const int nmax=1005;
const int kmax=5e4+5;
vector<int>v;
vector<int>ans;
vector<int>is_obtainable;
vector<int>pas;
int aux[nmax];
bool bad[kmax],yes[kmax];
int main()
{
ifstream cin("economie.in");
ofstream cout("economie.out");
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,valmax=-1,c;
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>c;
v.push_back(c);
valmax=max(valmax,c);
}
sort(v.begin(),v.end());
ans.push_back(v[0]);
for(int i=v[0]; i<=valmax; i+=v[0])
if(!yes[i])
{
yes[i]=true;
is_obtainable.push_back(i);
}
for(int i=1; i<v.size(); i++)
{
if(yes[v[i]]==true)
continue;
pas.clear();
ans.push_back(v[i]);
pas.push_back(v[i]);
for(int j=v[i];j<=valmax;j+=v[i])
if(!yes[j])
{
yes[j]=true;
pas.push_back(j);
}
for(auto x:is_obtainable)
for(int j=x+v[i]; j<=valmax; j+=v[i])
if(!yes[j])
{
yes[j]=true;
pas.push_back(j);
}
while(!pas.empty())
{
is_obtainable.push_back(pas[pas.size()-1]);
pas.pop_back();
}
}
cout<<ans.size()<<"\n";
for(auto x:ans)
cout<<x<<"\n";
return 0;
}