-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqr2-nest.lisp
More file actions
28 lines (23 loc) · 749 Bytes
/
qr2-nest.lisp
File metadata and controls
28 lines (23 loc) · 749 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
;;; Google Code Jam 2020, Qualification Round, Problem 2: Nesting Depth
(defun solve (&optional (in *standard-input*))
(let ((ncases (read in)))
(dotimes (caseno ncases)
(solve-case caseno in))))
(defun fix-parens (now need)
(do () ((>= now need)) (format t "(") (incf now))
(do () ((<= now need)) (format t ")") (decf now))
now)
(defun parenthesize (S)
(let ((nest 0))
(do ((k 0 (1+ k)))
((>= k (length S)))
(let ((dig (parse-integer (subseq S k (1+ k)))))
(setq nest (fix-parens nest dig))
(format t "~D" dig)))
(fix-parens nest 0)))
(defun solve-case (caseno in)
(let ((S (read-line in)))
(format t "Case #~D: " (+ caseno 1))
(parenthesize S)
(format t "~%")))
(solve)