Cod sursa(job #237924)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 30 decembrie 2008 22:07:35
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<stdio.h>
int n,a[1001],sol[1001];
int divide(int p,int q){
    int st,dr,x;
    st=p;
    dr=q;
    x=a[p];
    while(st<dr){
        while(st<dr&&a[dr]>=x)
            --dr;
        a[st]=a[dr];
        while(st<dr&&a[st]<=x)
            ++st;
        a[dr]=a[st];
        a[st]=x;}
    return st;}
void qsort(int p,int q){
    int m;
    m=divide(p,q);
    if(m-1>p)
        qsort(p,m-1);
    if(m+1<q)
        qsort(m+1,q);}
void solve(){
    int i,j,k=0;
    scanf("%d",&n);
    for(i=1; i<=n; ++i)
        scanf("%d",&a[i]);
    qsort(1,n);
    sol[++k]=a[1];
    for(i=2; i<=n; ++i){
        for(j=1; j<=k; ++j)
            if(a[i]%sol[j]==0)
                break;
        if(j==k+1)
            sol[++k]=a[i];}
    printf("%d\n",k);
    for(i=1; i<=k; ++i)
        printf("%d ",sol[i]);}
int main(){
    freopen("economie.in","r",stdin);
    freopen("economie.out","w",stdout);
    solve();
    return 0;}