第7回日本情報オリンピック 予選 つづき

第4問も解けた

(use srfi-1)

(define (mkstars lst cnt num)
  (if (= cnt num)
      lst
    (mkstars (cons (list (read) (read))
                   lst)
             (+ cnt 1)
             num)))

(define (search heiko idogo shashin)
  (if (lset<= equal? (car idogo) shashin)
      (car heiko)
    (search (cdr heiko) (cdr idogo) shashin)))

(define (main args)
  (with-input-from-file (cadr args)
    (lambda ()
      (let* ((seiza (mkstars '() 0 (read)))
             (shashin (mkstars '() 0 (read)))
             (idoryo (map (lambda (s)
                            (map - s (car seiza)))
                          shashin))
             (t (search idoryo
                        (map (lambda (h)
                               (map (lambda (s)
                                      (map + h s))
                                    seiza))
                             idoryo)
                        shashin)))
        (display (car t))
        (write-char #\space)
        (display (cadr t))))))