; variables ; k: the number of beans in a pack ; n: the number of packs ; f: the number of family members ; (k n f) (defparameter *bean-pack-family* ()) (defparameter *input-str* nil) (defparameter *num-list* ()) (defparameter *age-list* ()) (defvar *num-stack* ()) (defvar *list-stack* ()) ; function (defun separate-n (c) (cond ((char= c #\ ) (push (parse-integer (coerce (reverse *num-stack*) 'string)) *list-stack*) (setf *num-stack* '()) ) (t (push c *num-stack*))) ) (defun str-to-int-list (str) (map nil #'separate-n str) (push (parse-integer (coerce (reverse *num-stack*) 'string)) *list-stack*) (reverse *list-stack*) ) (defun input-to-list () (setf *input-str* (read-line)) (setf *num-list* (str-to-int-list *input-str*)) (reset-stack) ) (defun reset-stack () (setf *num-stack* ()) (setf *list-stack* ()) ) (defun input-to-age () (setf *input-str* (read-line)) (setf *age-list* (str-to-int-list *input-str*)) ) (defun eat-bean (total age-list) (cond ((< total 0) -1) ((< (length age-list) 1) total) (t (eat-bean (- total (car age-list)) (cdr age-list)))) ) (defun n143 () (input-to-list) (input-to-age) (princ (eat-bean (* (car *num-list*) (cadr *num-list*)) *age-list*)) ) (n143)