Pagini recente » Cod sursa (job #965544) | Cod sursa (job #2138085) | Cod sursa (job #1982053) | Cod sursa (job #532051) | Cod sursa (job #188048)
Cod sursa(job #188048)
#include <stdio.h>
#include <stdlib.h>
#define N 1010
#define MAX 50010
int n;
int v[N];
int valid[MAX];
int best[N],nr;
void scan(){
int i;
freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;++i)
scanf("%d",&v[i]);
}
void swap(int i,int j){
int aux;
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
void down_heap(int i,int n){
int max=i;
if (2*i<=n && v[max]<v[2*i])
max=2*i;
if (2*i+1<=n && v[max]<v[2*i+1])
max=2*i+1;
if (i!=max){
swap(i,max);
down_heap(max,n);
}
}
void sort(){
int i;
for (i=n/2;i>=1;--i)
down_heap(i,n);
for (i=n;i>1;--i){
swap(1,i);
down_heap(1,i-1);
}
}
void solve(){
int i,j;
nr=1;
best[nr]=v[1];
for (i=v[1];i<=MAX;i+=v[1])
valid[i]=1;
for (i=2;i<=n;++i){
if (valid[v[i]]==0){
best[++nr]=v[i];
for (j=v[i];j<=MAX;j+=v[i])
valid[j]=1;
}
}
}
void print(){
int i;
printf("%d\n",nr);
for (i=1;i<=nr;++i)
printf("%d\n",best[i]);
exit(0);
}
int main(){
scan();
sort();
solve();
print();
}