解法
となっている部分は、
もしくは
とスワップをすることで、
は条件を満たすことができます。
このとき、実はスワップ先のもしくは
も条件を必ず見たします。なぜなら、この数列は順列なので、
だった場合は、
もしくは
が
となり、中身の値が
の添え字と異なるからです。
このことを利用すると、前から順番に見ていき、が存在した部分は
とスワップする、という操作を繰り返すだけでよいことがわかります。
ただし、だった場合のみ注意が必要で、この場合は
とスワップをすれば十分です(この操作により、前の方の最善手が変わることはありません)。