結果
| 問題 | No.706 多眼生物の調査 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2018-09-17 00:14:06 | 
| 言語 | OCaml (5.2.1) | 
| 結果 | 
                                CE
                                 
                            (最新) 
                                AC
                                 
                            (最初) | 
| 実行時間 | - | 
| コード長 | 1,242 bytes | 
| コンパイル時間 | 289 ms | 
| コンパイル使用メモリ | 18,304 KB | 
| 最終ジャッジ日時 | 2024-11-14 20:37:12 | 
| 合計ジャッジ時間 | 871 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge4 | 
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
            
            
            
            
            ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
File "Main.ml", line 9, characters 2-13:
9 |   Stream.iter (fun x -> result := f !result x) st;
      ^^^^^^^^^^^
Error: Unbound module Stream
            
            ソースコード
module IntMap = Map.Make(
  struct
    type t = int
    let compare = compare
  end)
let stream_fold f init st =
  let result = ref init in
  Stream.iter (fun x -> result := f !result x) st;
  !result
let stream_to_rev_list st =
  stream_fold (fun result elem -> elem :: result) [] st
let map_find_opt key map =
  if IntMap.mem key map then
    Some(IntMap.find key map)
  else
    None
let map_to_list map =
  let result = ref [] in
  IntMap.iter (fun k v -> result := (k, v) :: !result) map;
  !result
let solve s_lst =
  let rec solve' lst map =
    match lst with
    | [] -> map
    | x :: rest ->
      let map' = match map_find_opt x map with
      | None -> IntMap.add x 1 map
      | Some(y) -> IntMap.add x (y + 1) map
      in
      solve' rest map'
  in
  solve' s_lst IntMap.empty
  |> map_to_list
  |> List.sort (fun (k1, v1) (k2, v2) -> 
    match compare v2 v1 with
    | c when c <> 0 -> c
    | _ -> compare k2 k1)
  |> List.hd
  |> fun (k, v) -> k
let () =
  let n = read_line () |> int_of_string in
  let s_lst = Stream.from(fun i ->
    if i >= n then
      None
    else
      read_line ()
      |> String.length
      |> fun j -> Some(j - 2))
    |> stream_to_rev_list
  in
  solve s_lst
  |> Printf.printf "%d\n"
            
            
            
        