Pagini recente » Cod sursa (job #2314528) | Cod sursa (job #1968848) | Cod sursa (job #482098) | Cod sursa (job #218470) | Cod sursa (job #131232)
Cod sursa(job #131232)
#include <stdio.h>
#define in "economie.in"
#define out "economie.out"
#define NMAX 1005
#define VMAX 50005
int SOL[NMAX], ind;
int A[NMAX];
int OK[VMAX];
int n;
void QSort( int, int );
int main()
{
freopen( in, "r", stdin );
freopen( out, "w", stdout );
scanf( "%d", &n );
int i,j;
for ( i = 1; i <= n; ++i )
scanf( "%d", &A[i] );
QSort( 1, n );
/*
for ( i = 1; i <= n; ++i )
printf( "%d ", A[i] );
*/
for ( i = 1; i <= VMAX; ++i ) //dimensiunea asta ar putea fi mai mare ?
OK[i] = 1;
for ( i = 1; i <= n; ++i )
{
if ( OK[A[i]] == 1)
{
SOL[++ind] = A[i];
j = 2;
while ( A[i] * j <= VMAX )
{
OK[A[i]*j] = 0;
j++;
}
}
}
printf( "%d\n", ind );
for ( i = 1; i <= ind; ++i )
printf( "%d\n", SOL[i] );
return 0;
}
void QSort( int st, int dr )
{
int pivot = A[st];
int i = st - 1, j = dr + 1;
do
{
do { i++; } while ( A[i] < pivot );
do { j--; } while ( A[j] > pivot );
if ( i <= j )
{
int aux = A[i];
A[i] = A[j];
A[j] = aux;
}
} while ( i <= j );
if ( i < dr ) QSort( i, dr );
if ( st < j ) QSort( st, j );
}