; array of integers

(define (f xs)
  (let ((mn (* (apply min xs) 2)) (mx (/ (apply max xs) 2)))
    (let loop ((xs xs) (lo 0) (hi 0))
      (cond ((null? xs) (min lo hi))
            ((< (car xs) mn) (loop (cdr xs) (+ lo 1) hi))
            ((< mx (car xs)) (loop (cdr xs) lo (+ hi 1)))
            (else (loop (cdr xs) lo hi))))))

(display (f '(4 5 3 8 3 7))) (newline)