Submission #6530475
Source Code Expand
;; -*- coding: utf-8 -*-
(eval-when (:compile-toplevel :load-toplevel :execute)
(defparameter OPT
#+swank '(optimize (speed 3) (safety 2))
#-swank '(optimize (speed 3) (safety 0) (debug 0)))
#+swank (ql:quickload '(:cl-debug-print :fiveam))
#-swank (set-dispatch-macro-character #\# #\> (lambda (s c p) (declare (ignore c p)) (read s nil (values) t))))
#+swank (cl-syntax:use-syntax cl-debug-print:debug-print-syntax)
#-swank (disable-debugger) ; for CS Academy
;; BEGIN_INSERTED_CONTENTS
(defmacro dbg (&rest forms)
#+swank
(if (= (length forms) 1)
`(format *error-output* "~A => ~A~%" ',(car forms) ,(car forms))
`(format *error-output* "~A => ~A~%" ',forms `(,,@forms)))
#-swank (declare (ignore forms)))
(defmacro define-int-types (&rest bits)
`(progn
,@(mapcar (lambda (b) `(deftype ,(intern (format nil "UINT~A" b)) () '(unsigned-byte ,b))) bits)
,@(mapcar (lambda (b) `(deftype ,(intern (format nil "INT~A" b)) () '(signed-byte ,b))) bits)))
(define-int-types 2 4 7 8 15 16 31 32 62 63 64)
(declaim (inline println))
(defun println (obj &optional (stream *standard-output*))
(let ((*read-default-float-format* 'double-float))
(prog1 (princ obj stream) (terpri stream))))
(defconstant +mod+ 1000000007)
;; Body
(defun main ()
(declare #.OPT)
(let* ((n (read))
(k (read))
(dp (make-array (+ 1 n) :element-type 'uint32)))
(declare (uint31 n k))
(setf (aref dp 0) 0
(aref dp 1) 1)
(loop for i from 2 to n
do (setf (aref dp i)
(mod (cond ((< i k)
(* 2 (aref dp (- i 1))))
((= i n)
(- (aref dp (- i 1))
(if (= i k)
1
(aref dp (- i k 1)))))
((= i k)
(- (* 2 (aref dp (- i 1))) 1))
(t
(- (* 2 (aref dp (- i 1)))
(aref dp (- i k 1)))))
+mod+)))
(println (aref dp n))))
#-swank (main)
Submission Info
| Submission Time | |
|---|---|
| Task | F - 準急 |
| User | sansaqua |
| Language | Common Lisp (SBCL 1.1.14) |
| Score | 4 |
| Code Size | 2255 Byte |
| Status | AC |
| Exec Time | 255 ms |
| Memory | 24168 KiB |
Judge Result
| Set Name | All | ||
|---|---|---|---|
| Score / Max Score | 4 / 4 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| All | 00, 01, 02, 03, 04, 90, 91 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00 | AC | 255 ms | 24168 KiB |
| 01 | AC | 52 ms | 12772 KiB |
| 02 | AC | 43 ms | 10724 KiB |
| 03 | AC | 41 ms | 10724 KiB |
| 04 | AC | 51 ms | 12772 KiB |
| 90 | AC | 36 ms | 8676 KiB |
| 91 | AC | 35 ms | 8676 KiB |