第三回 アルゴリズム実技検定 L - スーパーマーケット
それぞれの列について1個、2個の要素を入れた優先度付きキューをそれぞれ用意する
各キューで何番目の商品まで見たか、各商品がどちらかのキューで使用されたかのフラグも用意する
クエリ毎にそのクエリが見るキューの先頭の値を出力してキューから消す
列rの商品が使われた場合、その列の商品を新たにキューに追加する
それぞれのキューについてどこまで見たかのインデックスが使われた商品の位置より先に行っている場合、キュー内の商品が使われたことになるのでキューに追加
キューの先頭の値を見たり、キューに追加したりするときにその商品が既に使われていた場合は飛ばすようにする
キューへの追加も削除も最大でも商品の数までしか行われず、キューは最大N要素入っているので$ O(\sum_i^n k_i \log N)