ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

AOJ 2890 - ピボット (Pivots)

問題
提出コード

解法

双方向リストを作成します。
すべての数字について、1つ前と1つ後の数字を記録しておき(先頭、もしくは最後尾の数字だったら-1などをいれておきます)、その上でリストの先頭と最後の数字を何かしらの変数に記録しておきます。
そうしたら、あとはクエリにこたえていきます。
それぞれの数字の前後の記録を組み替えるだけですが、代入する順番に気を付けないと、記録していた数字がどこかへ行ってしまうので注意します。
指定された数字がxであった場合、xの次の数字が先頭に、1つ前の数字が最後尾に、当時先頭だった数字がxの次の数字に、最後尾だった数字がxの1つ前の数字になるので、うまく組み替えていきます。
最後の出力は、先頭から順番に、次の数字を見ていきながら出力していけば大丈夫です。