(defun solve (X Y) (let ((A (vector-sum X Y))) (if (and (vecelem-equal A) (< 0 (aref A 0))) ;ベクトル内の要素がすべて等しく、それが正か? (aref A 0) -1)));条件を満たしていればその値=ベクトルの先頭、そうでなければ-1 ;;ベクトル内の要素がすべて等しければt,1つでも違えばnil (defun vecelem-equal (A) (let ((res t)) (dotimes (i (length A)) (if (not (= (aref A 0) (aref A i))) (setf res nil))) res)) ;2つの同長のベクトルを取って、各要素の差を引き算する (defun vector-sum (X Y) (map 'vector #'- Y X)) (defun read-vec (N X Y) (dotimes (i N) (setf (aref X i) (read)) (setf (aref Y i) (read)))) (defun main () (let* ((N (read)) (X (make-array N :initial-element 0)) (Y (make-array N :initial-element 0))) (read-vec N X Y) (format t "~A~%" (solve X Y)))) (main)