Cod sursa(job #167774)

Utilizator tm_raduToma Radu tm_radu Data 30 martie 2008 00:46:23
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <stdio.h>
#define NM 1001

int n;
int v[NM];
int f[NM];
int i, j, k, nr;
int s[NM];

void Qsort(int st, int dr);

int main()
{
    freopen("economie.in", "r", stdin);
    freopen("economie.out", "w", stdout);
    scanf("%d", &n);
    for ( i = 1; i <= n; i++ )
        scanf("%d", &v[i]);
    Qsort(1, n);
    
    for ( i = 1; i <= n; i++ )
        if ( !s[i] )
        {
            nr++, f[nr] = v[i];
            s[i] = 1;
            for ( j = i+1; j <= n; j++ )
                if ( v[j] % v[i] == 0 ) s[j] = 1;
        }
    printf("%d\n", nr);
    for ( i = 1; i <= nr; i++ )
        printf("%d\n", f[i]);   
    return 0;
}

void Qsort(int st, int dr)
{
    int i = st-1;
    int j = dr+1;
    do
    {
        do { i++; } while ( v[i] < v[st] );
        do { j--; } while ( v[st] < v[j] );
        if ( i <= j )
        {
            int aux = v[i];
            v[i] = v[j];
            v[j] = aux;
        }
    } while ( i <= j );
    if ( i < dr ) Qsort(i, dr);
    if ( st < j ) Qsort(st, j);
}