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

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

정렬하기 2

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

요약
상대방의 정해진 교환 뒤에 매 라운드 교환 한 번으로 순열을 가장 적은 라운드에 정렬하고 동점이면 사전 순으로 가장 앞선 선택을 출력합니다.
난이도

어려움10점 중 8점

유형
BFS, 최단 경로, 정렬
정답자
아직 제출이 없습니다

문제

아이잔은 0부터 N−1N-1까지의 정수가 한 번씩 나오는 길이 NN의 수열 SS를 가지고 있다. 아이잔은 두 위치의 값을 맞바꾸는 방법으로 이 수열을 오름차순으로 정렬하려 한다.

아이잔의 오랜 친구 에르맥도 같은 수열에서 두 위치의 값을 맞바꾼다. 다만 에르맥은 정렬할 생각 없이 아무 위치나 고른다.

두 사람은 라운드를 반복한다. 한 라운드에서는 에르맥이 먼저 맞바꾸고, 이어서 아이잔이 맞바꾼다. 맞바꾸기는 위치 두 개를 고른 다음 그 두 위치의 값을 서로 바꾸는 것이다. 고른 두 위치가 같아도 되며, 그때는 수열이 그대로 남는다.

에르맥의 계획은 첫 라운드가 시작되기 전에 이미 아이잔에게 전부 알려져 있다. 계획은 MM개의 라운드로 이루어지고 라운드 번호는 0부터 M−1M-1까지다. ii번 라운드에서 에르맥은 위치 X[i]X[i]와 Y[i]Y[i]의 값을 맞바꾼다.

아이잔은 라운드를 시작하기 전에 수열이 오름차순으로 정렬되어 있으면 그 자리에서 멈춘다. 이때까지 진행한 라운드 수를 RR이라 하자. 처음부터 정렬되어 있으면 R=0R = 0이다. 어떤 라운드에서 에르맥이 맞바꾼 뒤 수열이 정렬되어 있으면, 아이잔은 같은 위치 두 개를 고르면 된다. 그러면 그 라운드가 끝난 시점에 수열은 정렬되어 있다.

수열 SS와 에르맥의 계획 MM, XX, YY가 주어진다. RR이 가장 작아지도록 아이잔이 라운드마다 고를 두 위치를 구하시오.

입력

첫째 줄에 수열의 길이 NN이 주어진다.

둘째 줄에 S[0]S[0]부터 S[N−1]S[N-1]까지 공백을 사이에 두고 주어진다.

셋째 줄에 에르맥이 계획한 라운드 수 MM이 주어진다.

다음 MM개의 줄 가운데 ii번째 줄에는 X[i]X[i]와 Y[i]Y[i]가 공백을 사이에 두고 주어진다.

  • 1≤N≤5001 \le N \le 500
  • SS에는 0부터 N−1N-1까지의 정수가 한 번씩 들어 있다
  • 1≤M≤10001 \le M \le 1000
  • 0≤X[i],Y[i]≤N−10 \le X[i], Y[i] \le N-1
  • 아이잔은 항상 MM라운드 안에 수열을 정렬할 수 있다

출력

첫째 줄에 가능한 가장 작은 라운드 수 RR을 출력한다.

이어지는 RR개의 줄에 아이잔이 고르는 위치를 출력한다. ii번째 줄에는 ii번 라운드에서 아이잔이 고른 두 위치 P[i]P[i]와 Q[i]Q[i]를 0≤P[i]≤Q[i]≤N−10 \le P[i] \le Q[i] \le N-1이 되도록 공백을 사이에 두고 출력한다. P[i]=Q[i]P[i] = Q[i]는 수열을 그대로 두는 맞바꾸기를 뜻한다.

RR이 최소인 답이 여러 가지면, P[0],Q[0],P[1],Q[1],…,P[R−1],Q[R−1]P[0], Q[0], P[1], Q[1], \dots, P[R-1], Q[R-1]을 이 순서로 늘어놓은 수열이 사전순으로 가장 앞서는 답을 출력한다.

RR이 0이면 첫째 줄만 출력한다.

예제5

  1. 예제 1

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

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

    입력
    1
    0
    1
    0 0
    
    예상 출력
    0
    
  4. 예제 4

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

    입력
    3
    1 0 2
    2
    0 1
    2 2
    
    예상 출력
    1
    0 0