結果

問題 No.116 門松列(1)
コンテスト
ユーザー ichibanshibori
提出日時 2016-10-21 00:47:33
言語 OCaml
(5.4.1)
コンパイル:
ocamlfind ocamlopt -linkpkg -package zarith,str _filename_ -o a.out
実行:
./a.out
結果
AC  
実行時間 1 ms / 5,000 ms
コード長 650 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 151 ms
コンパイル使用メモリ 21,180 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-04-25 04:22:02
合計ジャッジ時間 1,535 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 21
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

let is_kadomatsu a1 a2 a3 =
  a1 <> a3 &&
  (a1 < a2 && a3 < a2 || a1 > a2 && a3 > a2)

let solve alst =
  let rec solve' a1 a2 lst result =
    match lst with
    | [] -> result
    | x::xs ->
      let nextResult =
        if is_kadomatsu a1 a2 x then
          result + 1
        else result
      in
      solve' a2 x xs nextResult
  in
  let a1, lst = List.hd alst, List.tl alst in
  let a2, lst = List.hd lst, List.tl lst in
  solve' a1 a2 lst 0

let () =
  let _ = read_line ()
  and alst = read_line () |>
             Str.split (Str.regexp_string " ") |>
             List.map int_of_string
  in
  solve alst |> print_int;
  print_newline ()
0