様々な解法があると思いますが、ここではその一つを紹介します。


小さいものから順に数を確定させていきます。

について、現在がまだ確定していないような最小の正整数とします。次に確定させる数の候補はであるのでを確定させ、としながら個の数が確定するまで繰り返していけばよいです。

次に確定させる数の候補を優先度付きキュー(ヒープ)で管理しながら確定させていきます。 入力例1だと優先度付きキューの中身は以下のようになります。