Submission #7475989
Source Code Expand
;; -*- coding: utf-8 -*- (eval-when (:compile-toplevel :load-toplevel :execute) (sb-int:defconstant-eqx OPT #+swank '(optimize (speed 3) (safety 2)) #-swank '(optimize (speed 3) (safety 0) (debug 0)) #'equal) #+swank (ql:quickload '(:cl-debug-print :fiveam) :silent t) #-swank (set-dispatch-macro-character #\# #\> (lambda (s c p) (declare (ignore c p)) (read s nil nil t)))) #+swank (cl-syntax:use-syntax cl-debug-print:debug-print-syntax) #-swank (disable-debugger) ; for CS Academy ;; BEGIN_INSERTED_CONTENTS (declaim (inline read-schar)) (defun read-schar (&optional (stream *standard-input*)) (declare #-swank (sb-kernel:ansi-stream stream) (inline read-byte)) #+swank (read-char stream nil #\Newline) ; on SLIME #-swank (code-char (read-byte stream nil #.(char-code #\Newline)))) (defstruct (queue (:constructor make-queue (&optional list &aux (tail (last list))))) (list nil :type list) (tail nil :type (or null (cons t null)))) (declaim (inline enqueue)) (defun enqueue (obj queue) "Pushes OBJ to the end of QUEUE." (symbol-macrolet ((list (queue-list queue)) (tail (queue-tail queue))) (if (null list) (setf tail (list obj) list tail) (setf (cdr tail) (list obj) tail (cdr tail)))) queue) (declaim (inline dequeue)) (defun dequeue (queue) "Removes and returns the element at the front of QUEUE. Returns NIL if QUEUE is empty." (pop (queue-list queue))) (declaim (inline queue-empty-p)) (defun queue-empty-p (queue) (null (queue-list queue))) (declaim (inline enqueue-front)) (defun enqueue-front (obj queue) "Pushes OBJ to the front of QUEUE." (symbol-macrolet ((list (queue-list queue)) (tail (queue-tail queue))) (if (null list) (setf tail (list obj) list tail) (push obj list)) queue)) (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* ((h (read)) (w (read)) (k (read)) (q (make-queue)) (dists (make-array (list (+ h 2) (+ w 2)) :element-type 'uint32 :initial-element 0))) (declare (uint16 h w k)) (dotimes (i (+ h 2)) (enqueue (cons i 0) q) (enqueue (cons i (+ w 1)) q)) (dotimes (j (+ w 2)) (enqueue (cons 0 j) q) (enqueue (cons (+ h 1) j) q)) (dotimes (i h) (dotimes (j w) (let ((c (read-schar))) (if (char= #\x c) (enqueue (cons (+ i 1) (+ j 1)) q) (setf (aref dists (+ i 1) (+ j 1)) #xffffffff)))) (read-schar)) (labels ((visit (i j new-dist) (when (and (<= 0 i (+ h 1)) (<= 0 j (+ w 1)) (= (aref dists i j) #xffffffff)) (enqueue (cons i j) q) (setf (aref dists i j) new-dist)))) (loop until (queue-empty-p q) for (i . j) of-type (uint32 . uint32) = (dequeue q) for d = (aref dists i j) do (visit (- i 1) j (+ d 1)) (visit (+ i 1) j (+ d 1)) (visit i (- j 1) (+ d 1)) (visit i (+ j 1) (+ d 1))) (println (loop for d across (array-storage-vector dists) count (>= d k)))))) #-swank (main)
Submission Info
Submission Time | |
---|---|
Task | C - 菱型カウント |
User | sansaqua |
Language | Common Lisp (SBCL 1.1.14) |
Score | 100 |
Code Size | 4166 Byte |
Status | AC |
Exec Time | 245 ms |
Memory | 29668 KiB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 30 / 30 | 70 / 70 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt |
Subtask1 | subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt |
Subtask2 | subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask2-11.txt, subtask2-12.txt, subtask2-13.txt, subtask2-14.txt, subtask2-15.txt, subtask2-16.txt, subtask2-17.txt, subtask2-18.txt, subtask2-19.txt, subtask2-20.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
subtask0-sample01.txt | AC | 245 ms | 29668 KiB |
subtask0-sample02.txt | AC | 77 ms | 16996 KiB |
subtask0-sample03.txt | AC | 78 ms | 16996 KiB |
subtask1-01.txt | AC | 76 ms | 16996 KiB |
subtask1-02.txt | AC | 76 ms | 16996 KiB |
subtask1-03.txt | AC | 77 ms | 17000 KiB |
subtask1-04.txt | AC | 77 ms | 16992 KiB |
subtask1-05.txt | AC | 76 ms | 16996 KiB |
subtask1-06.txt | AC | 78 ms | 16992 KiB |
subtask1-07.txt | AC | 77 ms | 16992 KiB |
subtask1-08.txt | AC | 76 ms | 16996 KiB |
subtask1-09.txt | AC | 77 ms | 16996 KiB |
subtask1-10.txt | AC | 77 ms | 16996 KiB |
subtask1-11.txt | AC | 76 ms | 16996 KiB |
subtask1-12.txt | AC | 76 ms | 16996 KiB |
subtask1-13.txt | AC | 76 ms | 16996 KiB |
subtask1-14.txt | AC | 76 ms | 16996 KiB |
subtask1-15.txt | AC | 76 ms | 17000 KiB |
subtask1-16.txt | AC | 76 ms | 16992 KiB |
subtask1-17.txt | AC | 77 ms | 16992 KiB |
subtask1-18.txt | AC | 77 ms | 17000 KiB |
subtask1-19.txt | AC | 76 ms | 16996 KiB |
subtask1-20.txt | AC | 77 ms | 17000 KiB |
subtask2-01.txt | AC | 81 ms | 19044 KiB |
subtask2-02.txt | AC | 81 ms | 19040 KiB |
subtask2-03.txt | AC | 76 ms | 16996 KiB |
subtask2-04.txt | AC | 82 ms | 19040 KiB |
subtask2-05.txt | AC | 90 ms | 25184 KiB |
subtask2-06.txt | AC | 91 ms | 25184 KiB |
subtask2-07.txt | AC | 93 ms | 25192 KiB |
subtask2-08.txt | AC | 91 ms | 25188 KiB |
subtask2-09.txt | AC | 92 ms | 25184 KiB |
subtask2-10.txt | AC | 93 ms | 25188 KiB |
subtask2-11.txt | AC | 92 ms | 25184 KiB |
subtask2-12.txt | AC | 92 ms | 25188 KiB |
subtask2-13.txt | AC | 91 ms | 25192 KiB |
subtask2-14.txt | AC | 92 ms | 25188 KiB |
subtask2-15.txt | AC | 91 ms | 25188 KiB |
subtask2-16.txt | AC | 93 ms | 25188 KiB |
subtask2-17.txt | AC | 92 ms | 25192 KiB |
subtask2-18.txt | AC | 91 ms | 25188 KiB |
subtask2-19.txt | AC | 93 ms | 25184 KiB |
subtask2-20.txt | AC | 91 ms | 25188 KiB |