Submission #108538
Source Code Expand
let (|>) x f = f x ;; let (@@) f x = f x ;; let ident x = x ;; let char_to_int x = int_of_char x - int_of_char '0' ;; let int_to_char x = char_of_int (x + int_of_char '0') ;; module List = struct include ListLabels ;; let rec iteri i f = function | [] -> () | a::l -> f i a; iteri (i + 1) f l let iteri ~f l = iteri 0 f l end ;; module Array = struct include ArrayLabels ;; let reduce ~f xs = let acc = ref xs.(0) in for i = 1 to length xs - 1 do acc := f !acc xs.(i) done; !acc ;; end ;; module String = struct include StringLabels ;; let map_to_list ~f ss = let res = ref [] in iter ss ~f:(fun c -> res := f c :: !res); List.rev !res ;; let of_char_list ss = let res = String.create @@ List.length ss in List.iteri ss ~f:(fun i c -> res.[i] <- c); res ;; let iteri ~f a = for i = 0 to length a - 1 do f i (unsafe_get a i) done ;; end ;; module Float = struct let (+) = (+.) let (-) = (-.) let ( * ) = ( *. ) let (/) = (/.) end ;; module Int64 = struct include Int64 let (+) = add let (-) = sub let ( * ) = mul let (/) = div end ;; let fold_for ?(skip=1) min max ~init ~f = let acc = ref init in let cur = ref min in while !cur < max do acc := f !acc !cur; cur := !cur + skip; done; !acc ;; let iter_for ?(skip=1) min max ~f = let cur = ref min in while !cur < max do f !cur; cur := !cur + skip; done ;; let () = let n = Scanf.scanf "%d " (fun x -> x) in let rec iter i = if i = 0 then [] else let time = Scanf.scanf "%2d%2d-%2d%2d " (fun x y z w -> (x, y), (z, w)) in time :: iter (i - 1) in let lst = iter n |> List.map ~f:(fun ((s1, s2), (e1, e2)) -> (s1, s2 - s2 mod 5), (e1, (e2 - e2 mod 5) + if e2 mod 5 = 0 then 0 else 5)) |> List.map ~f:(fun ((s1, s2) as s, ((e1, e2) as e)) -> let s = if s2 = 60 then (s1 + 1, 0) else s in let e = if e2 = 60 then (e1 + 1, 0) else e in (s, e)) |> List.sort ~cmp:compare in List.iter lst ~f:(fun ((s1, s2), (e1, e2)) -> Printf.eprintf "debug:%02d%02d-%02d%02d\n" s1 s2 e1 e2); let h :: t = lst in let (res, last) = List.fold_left t ~init:([], h) ~f:(fun (acc, (lstart, lend)) (start, end_) -> if lend < start then ((lstart, lend) :: acc, (start, end_)) else (acc, (lstart, max lend end_))) in let res = List.rev (last :: res) in List.iter res ~f:(fun ((s1, s2), (e1, e2)) -> Printf.printf "%02d%02d-%02d%02d\n" s1 s2 e1 e2) ;;
Submission Info
Submission Time | |
---|---|
Task | D - 感雨時刻の整理 |
User | iab |
Language | OCaml (3.12.1) |
Score | 100 |
Code Size | 2620 Byte |
Status | AC |
Exec Time | 1830 ms |
Memory | 14024 KB |
Compile Error
File "./Main.ml", line 106, characters 6-12: Warning 8: this pattern-matching is not exhaustive. Here is an example of a value that is not matched: []
Judge Result
Set Name | all | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
all | 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, cho_cho_chokudai.txt, chokudai_ga_cho.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_01.txt | AC | 116 ms | 1144 KB |
00_sample_02.txt | AC | 50 ms | 1112 KB |
00_sample_03.txt | AC | 28 ms | 1304 KB |
cho_cho_chokudai.txt | AC | 1767 ms | 14024 KB |
chokudai_ga_cho.txt | AC | 1806 ms | 13648 KB |
test_01.txt | AC | 50 ms | 2264 KB |
test_02.txt | AC | 44 ms | 2340 KB |
test_03.txt | AC | 42 ms | 2224 KB |
test_04.txt | AC | 43 ms | 2212 KB |
test_05.txt | AC | 45 ms | 2220 KB |
test_06.txt | AC | 45 ms | 2348 KB |
test_07.txt | AC | 39 ms | 1960 KB |
test_08.txt | AC | 33 ms | 1780 KB |
test_09.txt | AC | 62 ms | 3236 KB |
test_10.txt | AC | 77 ms | 3320 KB |
test_11.txt | AC | 60 ms | 3240 KB |
test_12.txt | AC | 51 ms | 3240 KB |
test_13.txt | AC | 42 ms | 2268 KB |
test_14.txt | AC | 59 ms | 3244 KB |
test_15.txt | AC | 66 ms | 3248 KB |
test_16.txt | AC | 38 ms | 2008 KB |
test_17.txt | AC | 57 ms | 3240 KB |
test_18.txt | AC | 41 ms | 2216 KB |
test_19.txt | AC | 53 ms | 3240 KB |
test_20.txt | AC | 55 ms | 3236 KB |
test_21.txt | AC | 1738 ms | 13204 KB |
test_22.txt | AC | 1802 ms | 13204 KB |
test_23.txt | AC | 1791 ms | 13204 KB |
test_24.txt | AC | 1768 ms | 13204 KB |
test_25.txt | AC | 1830 ms | 13200 KB |
test_26.txt | AC | 1814 ms | 13208 KB |
test_27.txt | AC | 1779 ms | 13076 KB |
test_28.txt | AC | 1753 ms | 13208 KB |
test_29.txt | AC | 29 ms | 1176 KB |
test_30.txt | AC | 30 ms | 1436 KB |
test_31.txt | AC | 276 ms | 4380 KB |
test_32.txt | AC | 32 ms | 1324 KB |
test_33.txt | AC | 1138 ms | 10000 KB |
test_34.txt | AC | 30 ms | 1180 KB |
test_35.txt | AC | 56 ms | 2476 KB |
test_36.txt | AC | 1815 ms | 13712 KB |
test_37.txt | AC | 1764 ms | 13208 KB |
test_38.txt | AC | 1798 ms | 13208 KB |
test_39.txt | AC | 1816 ms | 13256 KB |
test_40.txt | AC | 1774 ms | 13252 KB |
test_41.txt | AC | 1823 ms | 13128 KB |
test_42.txt | AC | 1802 ms | 13076 KB |
test_43.txt | AC | 1754 ms | 13128 KB |