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