結果
| 問題 |
No.1512 作文
|
| コンテスト | |
| ユーザー |
motoshira
|
| 提出日時 | 2021-05-21 22:53:11 |
| 言語 | Common Lisp (sbcl 2.5.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,883 bytes |
| コンパイル時間 | 205 ms |
| コンパイル使用メモリ | 37,960 KB |
| 実行使用メモリ | 80,604 KB |
| 最終ジャッジ日時 | 2024-10-10 09:36:01 |
| 合計ジャッジ時間 | 2,895 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 3 |
| other | AC * 7 WA * 31 |
コンパイルメッセージ
; compiling file "/home/judge/data/code/Main.lisp" (written 10 OCT 2024 09:35:57 AM): ; wrote /home/judge/data/code/Main.fasl ; compilation finished in 0:00:00.021
ソースコード
(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)))
(dotimes (l 26)
(let ((tmp (make-array 26)))
(loop for (cnt r) in (aref ys l)
do (loop for idx from r below 26
do (maxf (aref tmp idx)
(+ (aref dp l)
cnt))))
(setf dp tmp)))
(println (reduce #'max dp)))))
#-swank (main)
motoshira