(* Opennings *)
(* Common part *)
let (|>) x f = f x
let identity = fun x -> x
let flip f y x = f x y
let readInStr _
= Scanf.scanf
"%d " identity
let readIntLn _
= Scanf.scanf
"%d\n" identity
(* Programme *)
let rec input_list = function
0 -> []
| n
-> (Scanf.scanf
"%s %s %d" (fun x y t
-> (x, y, t
)) ) :: (input_list
(n
-1)) ;;
let rec print_list =
let s x = function ( x,y, t) -> x^" "^y
in function
[] -> ()
;;
let mapf f =
let rec mapf' = function
[] -> []
| l::ls -> match f l ls
with None -> mapf' ls
| Some x -> x:: mapf' ls
in mapf';;
let exic p =
let rec exic' = function
[] -> false
| x:: xs -> if p x then true else exic' xs
in exic'
sample =
let rec f d l = function
[] -> None
| x ::xs -> match (l, x )
with( (a,b,t1) , (x,y,t) ) when a<>y or b<>x <> (t1-t = 0) -> f d l xs
| ((a,b,t1),(a1,b1,t) ) ->
if (t1-t) > d
then None
else Some (a,b)
in mapf f
let del_rep l =
let c = ref 0
in let f l ls = if exic (fun x ->match (x , l) with( (a,b), (c,d) )-> ((a=c)&&(b=d)) or ((a=d)&&(b=c)) ) ls then None else (inc c; Some l)
in (mapf f l , !c)
let main () =
let n = readInStr ()
in let d = readIntLn()
in let res = input_list n |> sample |> del_rep in
;;
main()
KCoJT3Blbm5pbmdzCSopCm9wZW4gTGlzdDs7CigqCUNvbW1vbiBwYXJ0CSopCmxldCAofD4pIHggZiA9IGYgeApsZXQgaWRlbnRpdHkgPSBmdW4geCAtPiB4CgpsZXQgZmxpcCBmIHkgeCA9IGYgeCB5CiAKbGV0IHJlYWRJblN0ciBfID0gU2NhbmYuc2NhbmYgIiVkICIgaWRlbnRpdHkKbGV0IHJlYWRJbnRMbiBfID0gU2NhbmYuc2NhbmYgIiVkXG4iIGlkZW50aXR5CigqCVByb2dyYW1tZQkqKQpsZXQgcmVjIGlucHV0X2xpc3QgPSBmdW5jdGlvbgoJMCAtPiBbXQoJfCBuIC0+IChTY2FuZi5zY2FuZiAiJXMgJXMgJWQiIChmdW4geCB5IHQgLT4gKHgsIHksIHQpKSApIDo6IChpbnB1dF9saXN0IChuLTEpKQo7OwpsZXQgcmVjIHByaW50X2xpc3QgPQoJbGV0IHMgeCA9IGZ1bmN0aW9uICggeCx5LCB0KSAtPiB4XiIgIl55CglpbiBmdW5jdGlvbgoJW10gLT4gKCkKCXwgeCA6OiB4cyAtPiBwcmludF9zdHJpbmcgeDsgcHJpbnRfbGlzdCB4cwo7OwpsZXQgbWFwZiBmID0gCglsZXQgcmVjIG1hcGYnID0gZnVuY3Rpb24gCgkJW10gLT4gW10KCQl8IGw6OmxzIC0+IG1hdGNoIGYgbCBscwoJCQl3aXRoIE5vbmUgLT4gbWFwZicgbHMKCQkJfCBTb21lIHggLT4geDo6IG1hcGYnIGxzCglpbiBtYXBmJzs7CmxldCBleGljIHAgPSAKCQlsZXQgcmVjIGV4aWMnID0gZnVuY3Rpb24KCQkJW10gLT4gZmFsc2UKCQkJfCB4OjogeHMgLT4gaWYgcCB4IHRoZW4gdHJ1ZSBlbHNlIGV4aWMnIHhzCgkJaW4gZXhpYycKc2FtcGxlID0gCglsZXQgcmVjIGYgZCBsID0gZnVuY3Rpb24KCVtdIC0+IE5vbmUKCXwgeCA6OnhzIC0+IG1hdGNoIChsLCB4ICkKCQl3aXRoKCAoYSxiLHQxKSAsICh4LHksdCkgKSB3aGVuIGE8Pnkgb3IgYjw+eCA8PiAodDEtdCA9IDApIC0+IGYgZCBsIHhzCgkJfCAoKGEsYix0MSksKGExLGIxLHQpICkgLT4KCQkJaWYgKHQxLXQpID4gZAoJCQl0aGVuIE5vbmUKCQkJZWxzZSBTb21lIChhLGIpCmluIG1hcGYgZgoKbGV0IGRlbF9yZXAgbCA9IAoJbGV0IGMgPSByZWYgMAoJaW4gbGV0IGYgbCBscyA9IGlmIGV4aWMgKGZ1biB4IC0+bWF0Y2ggKHggLCBsKSB3aXRoKCAoYSxiKSwgKGMsZCkgKS0+ICgoYT1jKSYmKGI9ZCkpIG9yICgoYT1kKSYmKGI9YykpICkgbHMgdGhlbiBOb25lIGVsc2UgKGluYyBjOyBTb21lIGwpCglpbiAobWFwZiBmIGwgLCAhYykKbGV0IG1haW4gKCkgPQoJbGV0IG4gPSByZWFkSW5TdHIgKCkKCWluIGxldCBkID0gcmVhZEludExuKCkgIAoJaW4gbGV0IHJlcyA9IGlucHV0X2xpc3QgbiB8PiBzYW1wbGUgfD4gZGVsX3JlcCBpbgoJCXByaW50X2ludCAoc25kIHJlcyk7CgkJcHJpbnRfbGlzdCAoZnN0IHJlcyk7CQkKCTs7Cm1haW4oKQo=
File "prog.ml", line 17, characters 5-6:
Warning Y: unused variable s.
File "prog.ml", line 51, characters 8-9:
Warning Y: unused variable d.
File "prog.ml", line 34, characters 0-6:
Unbound value sample