Pagini recente » Cod sursa (job #761324) | Cod sursa (job #1670927) | Cod sursa (job #1397759) | Cod sursa (job #320154) | Cod sursa (job #132749)
Cod sursa(job #132749)
#include <stdio.h>
#define nmax 50001
int n,v[nmax],sol[nmax],ct=0,i,j;
unsigned char s[nmax];
FILE*f=fopen("economie.in","r");
FILE*g=fopen("economie.out","w");
int part(int st, int dr)
{
int i=st,j=dr,aux,s=-1;
while (i<j)
{
if (v[i]>v[j])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
s=-s;
}
if (s==1) i++;
else j--;
}
return i;
}
void qsort(int st, int dr)
{
int p;
if (st<dr)
{
p=part(st,dr);
qsort(st,p-1);
qsort(p+1,dr);
}
}
int main()
{
fscanf(f,"%d",&n);
for (i=1; i<=n; i++)
fscanf(f,"%d",&v[i]);
qsort(1,n);
for (i=1; i<=n; i++)
if (s[v[i]]==0)
{
sol[++ct]=v[i];
while (j*v[i]<v[n])
{
s[v[i]*j]=1;
j++;
}
for (j=1; j<=v[n]; j++)
if (s[j]==1) s[j+v[i]]=1;
}
fprintf(g,"%d\n",ct);
for (i=1; i<=ct; i++)
fprintf(g,"%d\n",sol[i]);
return 0;
}