Submission #107939
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 deg f = if 1125 <= f && f < 3375 then "NNE" else if 3375 <= f && f < 5625 then "NE" else if 5625 <= f && f < 7875 then "ENE" else if 7875 <= f && f < 10125 then "E" else if 10125 <= f && f < 12375 then "ESE" else if 12375 <= f && f < 14625 then "SE" else if 14625 <= f && f < 16875 then "SSE" else if 16875 <= f && f < 19125 then "S" else if 19125 <= f && f < 21375 then "SSW" else if 21375 <= f && f < 23625 then "SW" else if 23625 <= f && f < 25875 then "WSW" else if 25875 <= f && f < 28125 then "W" else if 28125 <= f && f < 30375 then "WNW" else if 30375 <= f && f < 32625 then "NW" else if 32625 <= f && f < 34875 then "NNW" else "N" ;; let eps = 10e-4 ;; let power dis = let d = float_of_int dis /. 60. in let d = float_of_int (int_of_float ((d +. 0.05 +. eps) *. 10.)) /. 10. in let (<=) x y = (y -. x) > -.eps in if d <= 0.2 then 0 else if 0.3 <= d && d <= 1.5 then 1 else if 1.6 <= d && d <= 3.3 then 2 else if 3.4 <= d && d <= 5.4 then 3 else if 5.5 <= d && d <= 7.9 then 4 else if 8.0 <= d && d <= 10.7 then 5 else if 10.8 <= d && d <= 13.8 then 6 else if 13.9 <= d && d <= 17.1 then 7 else if 17.2 <= d && d <= 20.7 then 8 else if 20.8 <= d && d <= 24.4 then 9 else if 24.5 <= d && d <= 28.4 then 10 else if 28.5 <= d && d <= 32.6 then 11 else 12 ;; let () = let d, w = Scanf.scanf "%d %d " (fun x y -> x, y) in let p = power w in if p = 0 then print_endline "C 0" else Printf.printf "%s %d\n" (deg (d * 10)) p ;;
Submission Info
Submission Time | |
---|---|
Task | C - 風力観測 |
User | iab |
Language | OCaml (3.12.1) |
Score | 100 |
Code Size | 3095 Byte |
Status | AC |
Exec Time | 56 ms |
Memory | 1184 KB |
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, 00_sample_04.txt, 00_sample_05.txt, 00_sample_06.txt, 00_sample_07.txt, 00_sample_08.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, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_01.txt | AC | 56 ms | 1116 KB |
00_sample_02.txt | AC | 26 ms | 1056 KB |
00_sample_03.txt | AC | 26 ms | 1024 KB |
00_sample_04.txt | AC | 25 ms | 1056 KB |
00_sample_05.txt | AC | 26 ms | 1024 KB |
00_sample_06.txt | AC | 25 ms | 1028 KB |
00_sample_07.txt | AC | 25 ms | 1140 KB |
00_sample_08.txt | AC | 26 ms | 1152 KB |
test_01.txt | AC | 24 ms | 1056 KB |
test_02.txt | AC | 25 ms | 1028 KB |
test_03.txt | AC | 26 ms | 1028 KB |
test_04.txt | AC | 25 ms | 1156 KB |
test_05.txt | AC | 27 ms | 1056 KB |
test_06.txt | AC | 25 ms | 1028 KB |
test_07.txt | AC | 25 ms | 1056 KB |
test_08.txt | AC | 26 ms | 1028 KB |
test_09.txt | AC | 26 ms | 1156 KB |
test_10.txt | AC | 25 ms | 1044 KB |
test_11.txt | AC | 25 ms | 1028 KB |
test_12.txt | AC | 25 ms | 1176 KB |
test_13.txt | AC | 25 ms | 1156 KB |
test_14.txt | AC | 25 ms | 1056 KB |
test_15.txt | AC | 28 ms | 1184 KB |
test_16.txt | AC | 26 ms | 1152 KB |
test_17.txt | AC | 25 ms | 1024 KB |
test_18.txt | AC | 25 ms | 1152 KB |
test_19.txt | AC | 26 ms | 1152 KB |
test_20.txt | AC | 25 ms | 1048 KB |
test_21.txt | AC | 25 ms | 1072 KB |
test_22.txt | AC | 24 ms | 1056 KB |
test_23.txt | AC | 25 ms | 1136 KB |
test_24.txt | AC | 25 ms | 1028 KB |
test_25.txt | AC | 25 ms | 1056 KB |
test_26.txt | AC | 26 ms | 1028 KB |
test_27.txt | AC | 25 ms | 1140 KB |
test_28.txt | AC | 25 ms | 1140 KB |
test_29.txt | AC | 25 ms | 1156 KB |
test_30.txt | AC | 26 ms | 1152 KB |
test_31.txt | AC | 26 ms | 1152 KB |
test_32.txt | AC | 26 ms | 1156 KB |
test_33.txt | AC | 26 ms | 1024 KB |
test_34.txt | AC | 25 ms | 1028 KB |
test_35.txt | AC | 25 ms | 1156 KB |
test_36.txt | AC | 26 ms | 1140 KB |
test_37.txt | AC | 26 ms | 1028 KB |
test_38.txt | AC | 25 ms | 1028 KB |
test_39.txt | AC | 25 ms | 1024 KB |
test_40.txt | AC | 25 ms | 1056 KB |
test_41.txt | AC | 26 ms | 1024 KB |
test_42.txt | AC | 25 ms | 1028 KB |
test_43.txt | AC | 25 ms | 1056 KB |
test_44.txt | AC | 26 ms | 1028 KB |
test_45.txt | AC | 26 ms | 1052 KB |
test_46.txt | AC | 26 ms | 1152 KB |
test_47.txt | AC | 25 ms | 1024 KB |
test_48.txt | AC | 25 ms | 1156 KB |
test_49.txt | AC | 26 ms | 1140 KB |
test_50.txt | AC | 32 ms | 1156 KB |
test_51.txt | AC | 26 ms | 1032 KB |
test_52.txt | AC | 26 ms | 1104 KB |
test_53.txt | AC | 24 ms | 1028 KB |
test_54.txt | AC | 24 ms | 1052 KB |
test_55.txt | AC | 24 ms | 1056 KB |
test_56.txt | AC | 25 ms | 1056 KB |
test_57.txt | AC | 26 ms | 1056 KB |
test_58.txt | AC | 25 ms | 1032 KB |