結果

問題 No.472 平均順位
ユーザー Common LispCommon Lisp
提出日時 2024-11-12 22:07:51
言語 Common Lisp
(sbcl 2.3.8)
結果
AC  
実行時間 1,768 ms / 2,000 ms
コード長 1,057 bytes
コンパイル時間 354 ms
コンパイル使用メモリ 39,924 KB
実行使用メモリ 90,412 KB
最終ジャッジ日時 2024-11-12 22:08:05
合計ジャッジ時間 13,300 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 11 ms
30,400 KB
testcase_01 AC 9 ms
26,152 KB
testcase_02 AC 10 ms
26,152 KB
testcase_03 AC 10 ms
26,408 KB
testcase_04 AC 17 ms
40,856 KB
testcase_05 AC 11 ms
30,468 KB
testcase_06 AC 14 ms
34,824 KB
testcase_07 AC 19 ms
45,072 KB
testcase_08 AC 46 ms
84,000 KB
testcase_09 AC 127 ms
90,412 KB
testcase_10 AC 192 ms
86,368 KB
testcase_11 AC 319 ms
86,240 KB
testcase_12 AC 285 ms
86,240 KB
testcase_13 AC 1,768 ms
86,240 KB
testcase_14 AC 1,737 ms
86,368 KB
testcase_15 AC 1,739 ms
86,240 KB
testcase_16 AC 1,766 ms
90,412 KB
testcase_17 AC 1,743 ms
86,108 KB
testcase_18 AC 158 ms
86,368 KB
testcase_19 AC 1,591 ms
86,368 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
; compiling file "/home/judge/data/code/Main.lisp" (written 12 NOV 2024 10:07:51 PM):

; wrote /home/judge/data/code/Main.fasl
; compilation finished in 0:00:00.033

ソースコード

diff #

(defconstant +inf+ 987654321987654321)

(defun main (&rest argv)
  (declare (ignorable argv))
  (let* ((*read-default-float-format* 'double-float)
         (n (read))
         (p (read))
         (dp1 (make-array 15015 :element-type 'integer :initial-element +inf+)))
    (setf (aref dp1 0) 0)
    (dotimes (_ n)
      (let* ((a (read))
             (b (read))
             (c (read))
             (dp2 (make-array 15015 :element-type 'integer :initial-element +inf+)))
        (loop for j to (* 3 n) do
              (when (>= j 0)
                    (setf (aref dp2 j) (min (aref dp2 j) (+ a (aref dp1 j)))))
              (when (>= j 1)
                    (setf (aref dp2 j) (min (aref dp2 j) (+ b (aref dp1 (- j 1))))))
              (when (>= j 2)
                    (setf (aref dp2 j) (min (aref dp2 j) (+ c (aref dp1 (- j 2))))))
              (when (>= j 3)
                    (setf (aref dp2 j) (min (aref dp2 j) (+ 1 (aref dp1 (- j 3)))))))
        (replace dp1 dp2)))
    (format t "~f~%" (/ (float (aref dp1 p) 0d0) (float n 0d0)))))

(main)
0