Submission #1693088


Source Code Expand

(defun split (string &key (delimiterp #'delimiterp))
  (loop :for beg = (position-if-not delimiterp string)
    :then (position-if-not delimiterp string :start (1+ end))
    :for end = (and beg (position-if delimiterp string :start beg))
    :when beg :collect (subseq string beg end)
    :while end))

(defun delimiterp (c) (position c " ,.;/"))

(defun solve (dislike_digits_table first_like_digit N_str)
  (loop :for c :across N_str :and idx :from 0 :do
        (loop :while (nth (digit-char-p c) dislike_digits_table)
              :do
                  (cond ((eq c #\9)
                          (if (= idx 0)
                              (return-from solve (solve dislike_digits_table first_like_digit (concatenate 'string "1" (make-string (length N_str) :initial-element #\0))))
                            (return-from solve (solve dislike_digits_table first_like_digit (concatenate 'string (write-to-string (+ (parse-integer (subseq N_str 0 (+ idx 1))) 1)) (make-string (length (subseq N_str (+ idx 1))) :initial-element #\0))
                                   ))))
                        (t
                          (setq c (digit-char (+ (digit-char-p c) 1)))))
                  (setf (char N_str idx) c)
                  (setf (subseq N_str (+ idx 1)) (make-string (length (subseq N_str (+ idx 1))) :initial-element #\0))
              )
        )
  N_str
  )


(defun main()
  (let* ((N (read))
         (K (read))
         (D (read-line))
         (digits (split D))
         (dislike_digits_table (make-list 10))
         (first_like_digit nil)
         )
    (loop :for digit :in digits :collect
          (setf (nth (parse-integer digit) dislike_digits_table) t))
    (setq first_like_digit (position t dislike_digits_table))

    (princ (solve dislike_digits_table first_like_digit (write-to-string N))) (princ '#\newline)))

(main)

Submission Info

Submission Time
Task C - Iroha's Obsession
User mvgk
Language Common Lisp (SBCL 1.1.14)
Score 300
Code Size 1899 Byte
Status AC
Exec Time 224 ms
Memory 22372 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status AC
AC × 10
Set Name Test Cases
Sample
All subtask0_sample_01.txt, subtask0_sample_02.txt, subtask1_X_01.txt, subtask1_X_02.txt, subtask1_X_03.txt, subtask1_X_04.txt, subtask1_X_05.txt, subtask1_X_06.txt, subtask1_X_07.txt, subtask1_X_08.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 224 ms 22372 KB
subtask0_sample_02.txt AC 51 ms 10720 KB
subtask1_X_01.txt AC 51 ms 10724 KB
subtask1_X_02.txt AC 51 ms 10724 KB
subtask1_X_03.txt AC 50 ms 10724 KB
subtask1_X_04.txt AC 50 ms 10720 KB
subtask1_X_05.txt AC 50 ms 10728 KB
subtask1_X_06.txt AC 50 ms 10724 KB
subtask1_X_07.txt AC 50 ms 10720 KB
subtask1_X_08.txt AC 51 ms 10720 KB