>>62

void find_min_max(int *data, int count, int *min, int *max)
{
 int i;

 *max = *min = data[0];
 for (i=1; i<count; i++){
  if (*max < data[i]) *max = data[i];
  if (*min > data[i]) *min = data[i];
 }
}

int find_median(int *data, int count)
{
 int i,median,max,min,delta,mean;

 find_min_max(data, count, &min, &max);
 mean = (max + min)/2;
 delta = abs(data[0] - mean);
 for (i=1; i<count; i++)
  if ( delta > abs(data[i] - mean) ){
   median = data[i];
   delta = abs(data[i] - mean);
  }
 return median;
}

これを前提として…

median = find_median(data, count);
for (i=0; i<count; i++)
 if ( data[i] < median )
  printf("%d\n", data[i]);

とすればOK