atcoder#AGC058E. [AGC058E] Nearer Permutation
[AGC058E] Nearer Permutation
配点 : 点
問題文
この問題では,順列と言った際には, の順列を指すものとします.
つの順列 に対し,それらの距離 を次のように定義します.
- の中で隣接 項を swap することを繰り返し, を に一致させることを考える.この時必要な最小の操作回数を とする.
さらに,順列 に対し,順列 を次のように定義します.
- とする.ここで,順列 であって, を満たすものを考える. これらの中で辞書順最小のものを とする.
例えば, の場合, を満たす順列としては, が考えられます. このうち辞書順最小なのは なので, となります.
順列 が与えられます. を満たす順列 が存在するかどうか判定してください.
つの入力ファイルにつき, 個のテストケースを解いてください.
数列の辞書順とは?
相異なる数列 と数列 の大小を判定するアルゴリズムを以下に説明します。
以下では の 番目の要素を のように表します。また、 が より辞書順で小さい場合は 、大きい場合は と表します。
- と のうち長さが短い方の文字列の長さを とします。 に対して と が一致するか調べます。
- である が存在する場合、そのような のうち最小のものを とします。そして、 と を比較して、 が より(数として)小さい場合は 、大きい場合は と決定して、アルゴリズムを終了します。
- である が存在しない場合、 と の長さを比較して、 が より短い場合は 、長い場合は と決定して、アルゴリズムを終了します。
制約
- は の順列
- つの入力ファイルにつき, の総和は を超えない
- 入力される値はすべて整数である
入力
入力は以下の形式で標準入力から与えられる.
各ケースは以下の形式で与えられる.
出力
各ケースに対し, を満たす順列 が存在するならば Yes
を,存在しないならば No
を出力せよ.
2
2
1 2
2
2 1
Yes
Yes
例えば の場合は, とすると となります.
6
3
1 2 3
3
1 3 2
3
2 1 3
3
2 3 1
3
3 1 2
3
3 2 1
Yes
Yes
Yes
Yes
No
No
例えば の場合は, とすると, となります.
24
4
1 2 3 4
4
1 2 4 3
4
1 3 2 4
4
1 3 4 2
4
1 4 2 3
4
1 4 3 2
4
2 1 3 4
4
2 1 4 3
4
2 3 1 4
4
2 3 4 1
4
2 4 1 3
4
2 4 3 1
4
3 1 2 4
4
3 1 4 2
4
3 2 1 4
4
3 2 4 1
4
3 4 1 2
4
3 4 2 1
4
4 1 2 3
4
4 1 3 2
4
4 2 1 3
4
4 2 3 1
4
4 3 1 2
4
4 3 2 1
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
No
No
No
No
No
No
No
No