結果
| 問題 |
No.1512 作文
|
| コンテスト | |
| ユーザー |
motoshira
|
| 提出日時 | 2021-05-21 22:52:15 |
| 言語 | Common Lisp (sbcl 2.5.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,829 bytes |
| コンパイル時間 | 685 ms |
| コンパイル使用メモリ | 39,576 KB |
| 実行使用メモリ | 72,320 KB |
| 最終ジャッジ日時 | 2024-10-10 09:35:25 |
| 合計ジャッジ時間 | 2,754 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 WA * 1 |
| other | AC * 16 WA * 22 |
コンパイルメッセージ
; compiling file "/home/judge/data/code/Main.lisp" (written 10 OCT 2024 09:35:21 AM): ; wrote /home/judge/data/code/Main.fasl ; compilation finished in 0:00:00.100
ソースコード
(declaim (inline println))
(defun println (obj &optional (stream *standard-output*))
(let ((*read-default-float-format* 'double-float))
(prog1 obj
(princ obj stream)
(terpri stream))))
(defun ok (xs)
(sb-int:named-let rec ((xs xs)
(c #\a))
(or (null xs)
(and (char<= c (first xs))
(rec (rest xs)
(first xs))))))
(defun get-l-and-r (xs)
(when (ok xs)
(list (length xs)
(first (sort (copy-seq xs) #'char<))
(first (sort (copy-seq xs) #'char>)))))
(define-modify-macro maxf (var) max)
(defun char->int (c)
(- (char-code c)
(char-code #\a)))
(defun main ()
(let* ((n (read))
(ss (sort (remove-if #'null (mapcar #'get-l-and-r (loop repeat n collect (concatenate 'list (read-line))))) #'(lambda (xs ys)
(if (char= (second xs) (second ys))
(char< (third xs) (third ys))
(char< (second xs) (second ys))))))
(ys (make-array 26 :initial-element nil)))
(loop for (cnt l r) in ss
do (push (list cnt (char->int r))
(aref ys (char->int l))))
(let ((dp (make-array 26 :initial-element 0)))
(dotimes (l 26)
(loop for (cnt r) in (aref ys l)
do (loop for idx from r below 26
do (maxf (aref dp idx)
(+ (aref dp l)
cnt)))))
(println (reduce #'max dp)))))
#-swank (main)
motoshira