diff options
author | Nguyễn Gia Phong <mcsinyx@disroot.org> | 2021-02-15 21:05:21 +0700 |
---|---|---|
committer | Nguyễn Gia Phong <mcsinyx@disroot.org> | 2021-02-16 14:57:43 +0700 |
commit | 2b91f9554b326aea138bd8a0acbfaa10d9ad59aa (patch) | |
tree | 10053cf99e42711999d33b422a8735c5367d339f /codechef/frogs.scm | |
parent | 0cf49da1527983b9d165cd394b82c6bcbcafca60 (diff) | |
download | cp-2b91f9554b326aea138bd8a0acbfaa10d9ad59aa.tar.gz |
[codechef] Try CP again after almost a year
Diffstat (limited to 'codechef/frogs.scm')
-rw-r--r-- | codechef/frogs.scm | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/codechef/frogs.scm b/codechef/frogs.scm new file mode 100644 index 0000000..ab65f30 --- /dev/null +++ b/codechef/frogs.scm @@ -0,0 +1,17 @@ +(define (read-line n) (if (> n 0) (cons (read) (read-line (1- n))) '())) +(let test ((t (read))) + (when (> t 0) + (display + (let* ((n (read)) (w (read-line n)) (l (read-line n)) + (i (let range ((k 1) (m n)) + (if (> m 0) (cons k (range (1+ k) (1- m))) '())))) + (let loop ((last 0) + (frogs (map cdr (sort (map list w i l) + (lambda (u v) (< (car u) (car v))))))) + (if (null? frogs) + 0 + (let* ((first (car frogs)) (pos (car first)) (len (cadr first)) + (hits (if (> pos last) 0 (1+ (quotient (- last pos) len))))) + (+ hits (loop (+ pos (* hits len)) (cdr frogs)))))))) + (newline) + (test (1- t)))) |