diff options
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)))) |