提出 #318972
ソースコード 拡げる
let pf = Printf.printf ;;
let epf = Printf.eprintf ;;
let sf = Scanf.scanf ;;
let (|>) x f = f x ;;
let (@@) f x = f x ;;
module Array = struct
include ArrayLabels
let foldi ~f ~init arr =
let acc = ref init in
for i = 0 to Array.length arr - 1 do
acc := f i !acc arr.(i)
done;
!acc
;;
let findi arr ~f =
let len = Array.length arr in
let rec iter i =
if i = len then None
else if f arr.(i) then Some i
else iter (i + 1) in
iter 0
;;
let findi_exn arr ~f =
let len = Array.length arr in
let rec iter i =
if i = len then None
else if f arr.(i) then Some i
else iter (i + 1) in
iter 0
;;
(* i ∈ [0..res) -> not (f i) /\ i ∈ [res, len) -> f i *)
let lower_bound arr ~f =
let l, h = 0, Array.length arr in
(* res ∈ (l, h] *)
let rec iter l h =
if l = h - 1 then h
else
let m = (l + h) lsr 1 in
if f m then iter l m
else iter m h in
iter l h
;;
(* i ∈ [0..res] -> f i /\ i ∈ (res, len) -> not (f i) *)
let upper_bound arr ~f =
let l, h = 0, Array.length arr in
(* res ∈ [l, h) *)
let rec iter l h =
if l = h - 1 then l
else
let m = (l + h) lsr 1 in
if f m then iter m h
else iter l m in
iter l h
;;
end
module String = StringLabels ;;
module List = struct
include ListLabels ;;
let rec repeat n a = if n = 0 then [] else a :: repeat (n - 1) a ;;
let rec drop n a =
if n = 0 then a
else match a with
| [] -> failwith "cannot take"
| x :: xs -> drop (n - 1) xs ;;
let init ~f n =
let res = ref [] in
for i = 0 to n - 1 do
res := f i :: !res
done;
List.rev !res
;;
end ;;
module H = Hashtbl ;;
let c = ref ' ' ;;
let is_num c = '0' <= c && c <= '9' ;;
let is_space c = c = ' ' || c = '\n' || c = '\t' ;;
let to_num c = Char.code c - Char.code '0' ;;
let read_char () = input_char stdin ;;
let next_int () =
while is_space !c do
c := read_char () ;
done;
let ok = ref false in
let acc = ref 0 in
while is_num !c do
ok := true;
acc := !acc * 10 + to_num !c;
c := read_char ();
done;
if !ok then !acc
else raise (Failure "next_int")
;;
module SI = Set.Make (struct
type t = int
let compare = compare
end)
let solve s =
let pat = ['o'; 'k'; 'u'] in
let rec check i =
if i = String.length s then true
else if List.mem s.[i] pat then
check (i + 1)
else if s.[i] = 'c' && i + 1 < String.length s && s.[i + 1] = 'h' then
check (i + 2)
else false in
if check 0 then pf "YES\n" else pf "NO\n"
;;
let () =
sf "%s " solve
;;
提出情報
| 提出日時 | |
|---|---|
| 問題 | B - choku語 |
| ユーザ | iab |
| 言語 | OCaml (3.12.1) |
| 得点 | 100 |
| コード長 | 2794 Byte |
| 結果 | AC |
| 実行時間 | 32 ms |
| メモリ | 1184 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 100 / 100 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt |
| All | subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask1-21.txt, subtask1-22.txt, subtask1-23.txt, subtask1-24.txt, subtask1-25.txt, subtask1-26.txt, subtask1-27.txt, subtask1-28.txt, subtask1-29.txt, subtask1-30.txt, subtask1-31.txt, subtask1-32.txt, subtask1-33.txt, subtask1-34.txt, subtask1-35.txt, subtask1-36.txt, subtask1-37.txt, subtask1-38.txt, subtask1-39.txt, subtask1-40.txt, subtask1-41.txt, subtask1-42.txt, subtask1-43.txt, subtask1-44.txt, subtask1-45.txt, subtask1-46.txt, subtask1-47.txt, subtask1-48.txt, subtask1-49.txt, subtask1-50.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| subtask0-sample01.txt | AC | 28 ms | 1136 KiB |
| subtask0-sample02.txt | AC | 28 ms | 1152 KiB |
| subtask0-sample03.txt | AC | 30 ms | 1020 KiB |
| subtask1-01.txt | AC | 29 ms | 1164 KiB |
| subtask1-02.txt | AC | 28 ms | 1152 KiB |
| subtask1-03.txt | AC | 28 ms | 1112 KiB |
| subtask1-04.txt | AC | 29 ms | 1172 KiB |
| subtask1-05.txt | AC | 28 ms | 1028 KiB |
| subtask1-06.txt | AC | 30 ms | 1056 KiB |
| subtask1-07.txt | AC | 29 ms | 1024 KiB |
| subtask1-08.txt | AC | 28 ms | 1176 KiB |
| subtask1-09.txt | AC | 29 ms | 1184 KiB |
| subtask1-10.txt | AC | 32 ms | 1176 KiB |
| subtask1-11.txt | AC | 28 ms | 1024 KiB |
| subtask1-12.txt | AC | 28 ms | 1144 KiB |
| subtask1-13.txt | AC | 28 ms | 1148 KiB |
| subtask1-14.txt | AC | 29 ms | 1088 KiB |
| subtask1-15.txt | AC | 29 ms | 1152 KiB |
| subtask1-16.txt | AC | 28 ms | 1152 KiB |
| subtask1-17.txt | AC | 29 ms | 1152 KiB |
| subtask1-18.txt | AC | 31 ms | 1152 KiB |
| subtask1-19.txt | AC | 29 ms | 1152 KiB |
| subtask1-20.txt | AC | 29 ms | 1148 KiB |
| subtask1-21.txt | AC | 28 ms | 1152 KiB |
| subtask1-22.txt | AC | 29 ms | 1152 KiB |
| subtask1-23.txt | AC | 30 ms | 1024 KiB |
| subtask1-24.txt | AC | 29 ms | 1148 KiB |
| subtask1-25.txt | AC | 30 ms | 1152 KiB |
| subtask1-26.txt | AC | 29 ms | 1148 KiB |
| subtask1-27.txt | AC | 28 ms | 1032 KiB |
| subtask1-28.txt | AC | 28 ms | 1172 KiB |
| subtask1-29.txt | AC | 29 ms | 1020 KiB |
| subtask1-30.txt | AC | 29 ms | 1052 KiB |
| subtask1-31.txt | AC | 29 ms | 1176 KiB |
| subtask1-32.txt | AC | 29 ms | 1024 KiB |
| subtask1-33.txt | AC | 29 ms | 1024 KiB |
| subtask1-34.txt | AC | 28 ms | 1148 KiB |
| subtask1-35.txt | AC | 27 ms | 1024 KiB |
| subtask1-36.txt | AC | 29 ms | 1096 KiB |
| subtask1-37.txt | AC | 29 ms | 1148 KiB |
| subtask1-38.txt | AC | 32 ms | 1152 KiB |
| subtask1-39.txt | AC | 28 ms | 1024 KiB |
| subtask1-40.txt | AC | 27 ms | 1132 KiB |
| subtask1-41.txt | AC | 28 ms | 1116 KiB |
| subtask1-42.txt | AC | 28 ms | 1024 KiB |
| subtask1-43.txt | AC | 29 ms | 1128 KiB |
| subtask1-44.txt | AC | 28 ms | 1152 KiB |
| subtask1-45.txt | AC | 28 ms | 1112 KiB |
| subtask1-46.txt | AC | 27 ms | 1152 KiB |
| subtask1-47.txt | AC | 28 ms | 1152 KiB |
| subtask1-48.txt | AC | 28 ms | 1136 KiB |
| subtask1-49.txt | AC | 28 ms | 1172 KiB |
| subtask1-50.txt | AC | 27 ms | 1048 KiB |