아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

ツインリバース

시간 제한2초메모리 제한512 MB

요약
순열이 주어질 때, 위치 i를 기준으로 앞부분과 뒷부분을 각각 뒤집는 연산만으로 정렬할 수 있는지 판정하고, 가능하면 연산 순서를 출력한다.
난이도

보통10점 중 7점

유형
배열, 구현, 시뮬레이션, 정렬
정답자
아직 제출이 없습니다

문제

要素数 NN の配列 AA が与えられる。ただし、AA は (1, 2, ..., N)(1,\ 2,\ ...,\ N) の順列である。

次の操作を 00 回以上 10,00010,000 回以下の任意の回数行い、AA を (1, 2, ..., N)(1,\ 2,\ ...,\ N) へソートしたい。

  • 整数 ii (1≤i≤N1\leq i\leq N) を 11 つ選び、区間 A\[1, i−1]A\[1,\ i-1] の要素を逆順にし、区間 A\[i+1, N]A\[i+1,\ N] の要素を逆順にする。

ただし、区間 A\[l, r]A\[l,\ r] とは AA の l, l+1, ..., rl,\ l+1,\ ...,\ r 番目の位置のことである。

AA を (1, 2, ..., N)(1,\ 2,\ ...,\ N) へソートできるか判定せよ。ソートできるならば、操作の例を一つ出力せよ。

입력

入力は以下の形式で標準入力から与えられる。

NN

A_1A\_1 A_2A\_2 ...... A_NA\_N

출력

AA を (1, 2, ..., N)(1,\ 2,\ ...,\ N) へソートできないならば、-1 とだけ一行に出力せよ。

ソートできるならば、操作の例を一つ次のように出力せよ。

  • 11 行目には、操作の回数を表す整数 MM (0≤M≤10,0000\leq M\leq10,000) を出力せよ。
  • 22 行目からの MM 行のうち kk 行目には、kk 回目の操作で選ぶ整数 ii (1≤i≤N1\leq i\leq N) を出力せよ。

제한

  • 1≤N≤3,0001\leq N\leq 3,000
  • AA は (1, 2, ..., N)(1,\ 2,\ ...,\ N) の順列である。

예제3

  1. 예제 1

    입력
    5
    5 1 4 2 3
    
    예상 출력
    2
    3
    1
    
  2. 예제 2

    입력
    2
    2 1
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    3
    1 2 3
    
    예상 출력
    0