about summary refs log tree commit diff
path: root/codechef/frogs.scm
diff options
context:
space:
mode:
Diffstat (limited to 'codechef/frogs.scm')
-rw-r--r--codechef/frogs.scm17
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))))