(defun check-diff (a x y) (if (= a (- y x)) (- y x) -1)) (defun solve (n) (let* ((x_1 (read)) (y_1 (read)) (result (if (>= 0 (- y_1 x_1)) -1 (- y_1 x_1)))) (dotimes (i (1- n) result) (setf result (check-diff result (read) (read)))))) ;最初に読んだxとyの値をaに保存する(0以下なら-1に更新する) ;今後読むxとyの値について、□の値がaと等しいか見て、等しいならそのままにして、違ったら-1にする ;-1に一度でもなったならば、その後二度と-1以外の値にならない ;-1に一度もならない場合、aの値は所望の値のまま (defun main () (format t "~A~%" (solve (read)))) (main)