結果

問題 No.1765 While Shining
ユーザー motoshiramotoshira
提出日時 2021-11-27 00:12:25
言語 Common Lisp
(sbcl 2.3.8)
結果
AC  
実行時間 67 ms / 2,000 ms
コード長 2,035 bytes
コンパイル時間 901 ms
コンパイル使用メモリ 41,632 KB
実行使用メモリ 30,336 KB
最終ジャッジ日時 2024-06-29 18:52:02
合計ジャッジ時間 2,824 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 8 ms
22,272 KB
testcase_01 AC 9 ms
22,272 KB
testcase_02 AC 8 ms
22,272 KB
testcase_03 AC 8 ms
22,400 KB
testcase_04 AC 9 ms
22,272 KB
testcase_05 AC 8 ms
22,272 KB
testcase_06 AC 9 ms
22,272 KB
testcase_07 AC 8 ms
22,272 KB
testcase_08 AC 9 ms
22,272 KB
testcase_09 AC 46 ms
27,520 KB
testcase_10 AC 61 ms
29,568 KB
testcase_11 AC 53 ms
28,800 KB
testcase_12 AC 60 ms
29,440 KB
testcase_13 AC 54 ms
28,672 KB
testcase_14 AC 66 ms
30,336 KB
testcase_15 AC 64 ms
30,208 KB
testcase_16 AC 66 ms
30,336 KB
testcase_17 AC 65 ms
30,208 KB
testcase_18 AC 66 ms
30,208 KB
testcase_19 AC 65 ms
30,080 KB
testcase_20 AC 67 ms
30,208 KB
testcase_21 AC 67 ms
30,336 KB
testcase_22 AC 66 ms
30,336 KB
testcase_23 AC 65 ms
30,336 KB
testcase_24 AC 61 ms
30,336 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
; compiling file "/home/judge/data/code/Main.lisp" (written 29 JUN 2024 06:51:59 PM):

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

ソースコード

diff #

(in-package #:cl-user)

;;------------------------------Preferences------------------------------

(eval-when (:compile-toplevel :load-toplevel :execute)
  #+swank (declaim (optimize (speed 3) (safety 2)))
  #-swank (declaim (optimize (speed 3) (safety 0) (debug 0)))
  #+swank (load "~/ghq/github.com/motoshira/atcoder-submission/ac-tools/act.lisp")
  #+swank (ql:quickload :prove)
  #-swank (declaim (sb-ext:muffle-conditions sb-ext:compiler-note))
  #-swank (sb-ext:disable-debugger)
  (pushnew :inline-generic-funcion *features*))

;;---------------------------------Body---------------------------------

(in-package #:cl-user)

(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 read-into (count &optional (result-type 'list) (reader #'read))
  (coerce (loop :repeat count :collect (funcall reader)) result-type))

(defun main ()
  (let* ((n (read))
         (as (read-into n 'vector))
         (movable (make-array n :initial-element nil))
         (next (make-array n :initial-element (1- n))))
    (dotimes (i (1- n))
      (when (and (plusp i)
                 (= 1 (logxor (aref as i)
                              (aref as (1- i)))))
        (setf (aref movable i) t)))
    (loop :for i :from (- n 2) :downto 0
          :do (setf (aref next i)
                    (if (aref movable i)
                        (aref next (1+ i))
                        i)))
    (let ((res 0))
      (dotimes (i (1- n))
        (when (= 1 (aref as i))
          (let ((dist (aref next (1+ i))))
            (incf res (- dist i)))))
      (println res))))

#-swank (main)

#+swank
(defun run ()
  (let ((*standard-input*
          (make-string-input-stream
           (with-output-to-string (*standard-output*)
             (run-program
              (merge-pathnames "copy-or-paste" (truename "~/bin/"))
              '()
              :output *standard-output*)))))
    (main)))
0