Official

D - Penta-Queue Editorial by snuke


各キューが sorted な状態をキープすることで、pop クエリにいつでも対応が可能です。

sorted な \(2\) つのキュー \(A,B\) を、\(|A|+|B|\) 回の移動操作でマージすることができます。(\(B\) を自分自身に移動させることで一周分 rotate しつつ、適切なタイミングで \(A\) の要素を移動させる)

以下のルールで操作を行えば良いです。

  • キュー \(i\) のサイズが \(9^{i-1}\) 以上になったらキュー \(i+1\) にマージする。

\(Q<9^4\) なのでキュー \(4\) のサイズが \(9^4\) 以上になることはありません。 移動操作回数の合計の上限は、以下のように見積もることができます。

  • キュー \(i\) からキュー \(i+1\) へのマージに使用する移動操作回数の合計は \((1+2+\ldots+9)9^i \times (Q/9^{i+1}) = 5Q\)
  • つまり、総移動操作回数は \(20Q\) 回以下

posted:
last update: