; career cup

(define (med1 lt? xs ys)
  (let* ((zs (merge xs ys lt?)) (n (length zs)))
    (list-ref zs (quotient n 2))))

(display (med1 < '(1 3 5 7 9) '(2 4 6 8))) (newline)

(define (med2 lt? xs ys)
  (let ((n (quotient (+ (length xs) (length ys) 1) 2)))
    (let loop ((n (- n 1)) (xs xs) (ys ys))
      (cond ((zero? n) (car xs))
            ((lt? (car xs) (car ys))
              (loop (- n 1) (cdr xs) ys))
            ((lt? (car ys) (car xs))
              (loop (- n 1) xs (cdr ys)))
            (else (loop (- n 1) (cdr xs) ys))))))

(display (med2 < '(1 3 5 7 9) '(2 4 6 8))) (newline)