Haskellには、C++で言う所のpriority_queueにあたるモジュールがないので、Codeforcesでこれが必要な問題は解けないという問題を抱えていた(幸い、これまで自分が出てきたコンテストでそういう問題には当たらなかった、はずです)ので、自前で実装してみました。 実装したのは 型 Heap a a型の変数を持つヒープ 関数 関数名 型 機能 make_heap (a -> a -> Bool) -> [a] -> Int -> Heap a 順序付けする関数(後述)と要素のリスト、ヒープの最大サイズを受け取ってヒープを構築 pop_heap Heap a -> Maybe (a, Heap a) 最大(最小)値を取り出す。ヒープが空の時はNothingを返す push_heap Heap a -> a -> Heap a ヒープに要素を挿入 です。他にも細々とした補助関数は
![似非学問的な手記](https://cdn-ak-scissors.b.st-hatena.com/image/square/06a15c64ba0ceec233d86d71001ebb29a9dcbf5d/height=288;version=1;width=512/https%3A%2F%2Fcdn.blog.st-hatena.com%2Fimages%2Ftheme%2Fog-image-1500.png)