Common Lisp doesn't have a built in set datatype, so you have to do uniqueness checking sort of by hand unless you want to pull in an external package.
(ql:quickload :str)
(defun read-inputs (filename)
(let ((input-lines (uiop:read-file-lines filename)))
(mapcar #'parse-integer (str:split "," (car input-lines)))))
(defun add-distinct (xs)
(loop for x in (remove-duplicates (sort (copy-seq xs) #'>))
sum x))
(defun main-1 (filename)
(add-distinct (read-inputs filename)))
(defun main-2 (filename)
(let* ((sizes (read-inputs filename))
(first-20 (subseq (remove-duplicates (sort (copy-seq sizes) #'<)) 0 20)))
(loop for x in first-20
sum x)))
(defun count-max-copies (xs)
(labels ((iter (xs cur-x cur-count max-count)
(cond ((null xs)
max-count)
((equal (car xs) cur-x)
(iter (cdr xs) cur-x (1+ cur-count) (max max-count (1+ cur-count))))
(t
(iter (cdr xs) (car xs) 1 max-count)))))
(iter (cdr xs) (car xs) 1 1)))
(defun main-3 (filename)
(count-max-copies (sort (read-inputs filename) #'<)))