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

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

마법의 돌 장난감

면접 대비

시간 제한1초메모리 제한256 MB

요약
1부터 N까지의 순열을 인접 구간 뒤집기 100번 이하로 오름차순으로 정렬하고, 불가능하면 -1을 출력한다.
난이도

보통10점 중 5점

유형
정렬, 그리디, 구현, 배열
정답자
아직 제출이 없습니다

문제

폴리매스 왕국의 힘은 마법의 돌에서 나온다는 전설이 있다. 당신은 마법의 돌 장난감을 파는 친구의 부탁을 받고 가게 정리를 돕기로 했다.

매장에는 NN개의 장난감이 있고, 크기는 11부터 NN까지의 자연수로 모두 다르다. 당신은 이 장난감을 크기 순서대로 정렬하려고 한다. 왼쪽부터 크기가 차례로 1,2,⋯ ,N1, 2, \cdots, N이 되게 하려는 것이다. 이를 위해 몇 번의 조작을 할 수 있다. 한 번의 조작은 인접한 몇 개의 장난감을 골라 그 순서를 뒤집는 일이다. 예를 들어 왼쪽부터 장난감의 크기가 차례로 1,2,5,4,31, 2, 5, 4, 3인 상황에서 세 번째부터 다섯 번째 장난감에 조작을 하면 크기가 차례로 1,2,3,4,51, 2, 3, 4, 5가 되어 정렬이 끝난다.

장난감을 100회 이하의 조작으로 정렬할 수 있는지 판단하고, 정렬할 수 있다면 그 방법을 아무거나 하나 찾는 프로그램을 작성하시오.

입력

첫 줄에는 장난감의 수 NN이 주어진다. 둘째 줄에는 각 장난감의 크기를 나타내는 NN개의 정수 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 빈칸을 사이에 두고 주어진다.

출력

100번 이하의 조작으로 장난감을 정렬할 수 없다면 −1-1을 출력하고 프로그램을 종료한다. 정렬할 수 있다면 첫 줄에 조작의 횟수 QQ를 출력한다. 둘째 줄부터 QQ개의 줄에는 각 조작에서 뒤집는 장난감의 왼쪽 끝 번호 lil_i와 오른쪽 끝 번호 rir_i를 출력한다. 예를 들어 왼쪽에서 세 번째 장난감부터 왼쪽에서 다섯 번째 장난감까지 조작을 한다면 33 55를 출력한다.

제한

  • 1≤N≤1001 \le N \le 100
  • 1≤Ai≤N1 \le A_i \le N
  • i≠j⇔Ai≠Aji \neq j \Leftrightarrow A_i \neq A_j

정렬이 가능하다면 출력은 아래 조건을 만족해야 한다.

  • 0≤Q≤1000 \le Q \le 100
  • 1≤li≤ri≤N1 \le l_i \le r_i \le N (1≤i≤Q)(1 \le i \le Q)

예제2

  1. 예제 1

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

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