結果

問題 No.628 Tagの勢い
ユーザー xsdxsd
提出日時 2020-06-21 03:02:15
言語 OCaml
(5.1.0)
結果
AC  
実行時間 8 ms / 2,000 ms
コード長 916 bytes
コンパイル時間 253 ms
コンパイル使用メモリ 21,704 KB
実行使用メモリ 5,760 KB
最終ジャッジ日時 2024-04-17 09:01:35
合計ジャッジ時間 1,014 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 AC 2 ms
5,376 KB
testcase_02 AC 2 ms
5,376 KB
testcase_03 AC 2 ms
5,376 KB
testcase_04 AC 2 ms
5,376 KB
testcase_05 AC 2 ms
5,376 KB
testcase_06 AC 1 ms
5,376 KB
testcase_07 AC 1 ms
5,376 KB
testcase_08 AC 2 ms
5,376 KB
testcase_09 AC 2 ms
5,376 KB
testcase_10 AC 2 ms
5,376 KB
testcase_11 AC 2 ms
5,376 KB
testcase_12 AC 8 ms
5,760 KB
testcase_13 AC 8 ms
5,760 KB
testcase_14 AC 7 ms
5,632 KB
testcase_15 AC 8 ms
5,760 KB
testcase_16 AC 4 ms
5,376 KB
testcase_17 AC 2 ms
5,376 KB
testcase_18 AC 2 ms
5,376 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

Scanf.scanf "%d" (fun n ->
    let module M = Map.Make (struct type t = string let compare = compare end) in
    let rec loop i acc =
        if i = n then acc else
            let acc = Scanf.scanf " %d %d %d" (fun no m s ->
                let rec loop_j j acc =
                    if j = m then acc else
                        let acc = Scanf.scanf " %s" (fun key ->
                            M.add key (s + try M.find key acc with _ -> 0) acc)
                        in
                        loop_j (j + 1) acc
                in
                loop_j 0 acc
            )
            in
            loop (i + 1) acc
    in
    let map = loop 0 M.empty in
    let a = Array.of_list @@ M.bindings map in
    Array.sort (fun (a1, b1) (a2, b2) -> compare (-b1, a1) (-b2, a2)) a;
    for i = 0 to min 9 (Array.length a - 1) do
        let (tag, sc) = a.(i) in
        Printf.printf "%s %d\n" tag sc
    done
)
0