Cod sursa(job #286394)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 23 martie 2009 19:47:03
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
# include <stdio.h>

int N,i,v[1001],C[1001],k;
void quick(int st, int dr)
{
  int i=st,j=dr,p=v[(st+dr)/2],aux;
  if (dr<=st) return;
  while (i<=j){
    while (v[i]<p) i++;
    while (p<v[j]) j--;
    if (i<=j) {
    aux=v[i];v[i]=v[j]; v[j]=aux;
    i++; j--;
    }
  }
  if (st<j) quick(st,j);
  if (i<dr) quick(i,dr);
}

int BS(int x)
{ int i,j,m,r;
  i=1; j=x-1;
  while (i<=j) {
    m=i+(j-i)/2;
    r=v[x]%v[m];
    if (r==0) return 1;
     else if (r>v[m]) i=m+1;
       else j=m-1;
  }
  return 0;
}

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]);

  quick(1,N);

  C[1]=v[1]; k=1;
  for (i=2;i<=N;i++)
     if (!BS(i)) C[k++]=v[i];
  printf("%d\n",k);
  for (i=1;i<=k;++i)
    printf("%d ",C[i]);
  return 0;
}