Submission #5151046


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 (progn (ql:quickload '(:cl-debug-print :fiveam))
                 (shadow :run)
                 (use-package :fiveam)))
#+swank (cl-syntax:use-syntax cl-debug-print:debug-print-syntax)

;; BEGIN_INSERTED_CONTENTS
(declaim (ftype (function * (values fixnum &optional)) read-fixnum))
(defun read-fixnum (&optional (in *standard-input*))
  (macrolet ((%read-byte ()
               `(the (unsigned-byte 8)
                     #+swank (char-code (read-char in nil #\Nul))
                     #-swank (sb-impl::ansi-stream-read-byte in nil #.(char-code #\Nul) nil))))
    (let* ((minus nil)
           (result (loop (let ((byte (%read-byte)))
                           (cond ((<= 48 byte 57)
                                  (return (- byte 48)))
                                 ((zerop byte) ; #\Nul
                                  ;; (return-from read-fixnum 0)
                                  (error "Read EOF or #\Nul."))
                                 ((= byte #.(char-code #\-))
                                  (setf minus t)))))))
      (declare ((integer 0 #.most-positive-fixnum) result))
      (loop
        (let* ((byte (%read-byte)))
          (if (<= 48 byte 57)
              (setq result (+ (- byte 48) (the fixnum (* result 10))))
              (return (if minus (- result) result))))))))

(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 ()
  (let* ((n (read))
         (as (make-array n :element-type 'uint32))
         (cumul (make-array (+ 1 n) :element-type 'uint32 :initial-element 0))
         (cumul2 (make-array (+ 1 n) :element-type 'uint32 :initial-element 0)))
    (dotimes (i n)
      (setf (aref as i) (read-fixnum)))
    (dotimes (i n)
      (setf (aref cumul (+ i 1))
            (gcd (aref cumul i) (aref as i))))
    (loop for i from n above 0
          do (setf (aref cumul2 (- i 1))
                   (gcd (aref cumul2 i) (aref as (- i 1)))))
    (println
     (loop for i from 0 below n
           maximize (gcd (aref cumul i) (aref cumul2 (+ i 1)))))))

#-swank(main)

Submission Info

Submission Time
Task C - GCD on Blackboard
User sansaqua
Language Common Lisp (SBCL 1.1.14)
Score 300
Code Size 3031 Byte
Status AC
Exec Time 240 ms
Memory 25188 KiB

Judge Result

Set Name All Sample
Score / Max Score 300 / 300 0 / 0
Status
AC × 16
AC × 3
Set Name Test Cases
All sample_01, sample_02, sample_03, testcase_01, testcase_02, testcase_03, testcase_04, testcase_05, testcase_06, testcase_07, testcase_08, testcase_09, testcase_10, testcase_11, testcase_12, testcase_13
Sample sample_01, sample_02, sample_03
Case Name Status Exec Time Memory
sample_01 AC 240 ms 25188 KiB
sample_02 AC 62 ms 12772 KiB
sample_03 AC 61 ms 12772 KiB
testcase_01 AC 85 ms 14820 KiB
testcase_02 AC 96 ms 14820 KiB
testcase_03 AC 61 ms 12772 KiB
testcase_04 AC 91 ms 14816 KiB
testcase_05 AC 71 ms 14820 KiB
testcase_06 AC 92 ms 14824 KiB
testcase_07 AC 61 ms 12768 KiB
testcase_08 AC 61 ms 12772 KiB
testcase_09 AC 88 ms 14816 KiB
testcase_10 AC 89 ms 14816 KiB
testcase_11 AC 88 ms 14816 KiB
testcase_12 AC 62 ms 12772 KiB
testcase_13 AC 62 ms 12776 KiB