|
ToDo:
|
Clojureで試してみましたが2問目の5000行は返ってきません。mklstとcountmatch両方遅いのは判っているのですがうまく出来ませんでした。twitterで励ましていただいたのですがまだまだこれから試してみたいのです。threadを分けても考えましたが時間切れでした。まぁ問題のデータも持っているのでこれからじっくり隙を見てやってみます。
(use 'clojure.java.io)
(def lst (with-open [rdr (reader *in*)]
(doall
(concat () (line-seq rdr)))))
(def lst (map #(Integer/parseInt %) lst))
(def m (first lst))
(def lst (nthnext lst 2))
(defn mklst[m lst]
(map #(- m %)
(reverse
(drop-last
(reduce #(conj %1 (+ (last %1) %2) )
(list (first lst)) (next lst) )))))
(defn countmatch[m lst]
(reduce
#(if
(some #{(second %2)}
(nthnext lst (+ 2 (first %2))))
(inc %1) %1)
0
(partition 2 (interleave (range) (mklst m lst)))))
(println (loop [r 0 l lst]
(if (= 1 (count l)) r
(recur (+ r (countmatch m l)) (next l)))))