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

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

방해받으며 정렬하기

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

요약
알려진 방해 교환 사이에서 한 라운드에 한 번씩 교환해 순열을 가장 적은 라운드에 정렬하고 동점이면 사전 순으로 가장 앞선 방법을 출력합니다.
난이도

어려움10점 중 9점

유형
수학, 그리디
정답자
아직 제출이 없습니다

문제

아이잔은 00부터 N−1N-1까지의 정수가 한 번씩 나오는 길이 NN의 수열 SS를 가지고 있다. 아이잔은 두 위치의 값을 맞바꾸면서 이 수열을 오름차순으로 정렬하려고 한다. 아이잔의 오랜 친구 에르맥도 수열에서 두 위치를 맞바꾸는데, 아이잔과 달리 정렬하려는 목적 없이 아무렇게나 바꾼다.

두 사람은 라운드를 거치며 수열을 조작한다. 각 라운드에서 에르맥이 먼저 맞바꾸기를 하고, 그다음 아이잔이 맞바꾸기를 한다. 맞바꾸기는 위치 두 개를 고른 뒤 그 두 위치의 값을 교환하는 것이다. 고른 두 위치가 서로 같아도 되고, 이때 수열은 변하지 않는다.

아이잔은 에르맥이 아무렇게나 바꾼다는 사실을 알고 있고, 라운드가 시작하기 전부터 에르맥의 계획을 모두 알고 있다. 에르맥은 MM개의 라운드를 계획했다. 라운드에 00번부터 M−1M-1번까지 순서대로 번호를 붙이면, ii번 라운드에서 에르맥이 맞바꾸는 두 위치는 X[i]X[i]와 Y[i]Y[i]이다.

각 라운드를 시작하기 전에 수열이 이미 정렬되어 있으면 아이잔은 라운드를 더 진행하지 않고 멈출 수 있다. 어떤 라운드에서 에르맥이 맞바꾸기를 한 뒤 수열이 정렬되어 있다면, 아이잔은 같은 위치를 두 번 고르면 된다. 예를 들어 00번 위치와 00번 위치를 고르면 그 라운드가 끝날 때 수열은 정렬된 상태이고 아이잔은 멈출 수 있다. 처음부터 수열이 정렬되어 있다면 필요한 라운드 수는 00이다.

수열 SS와 에르맥의 계획이 주어진다. 아이잔이 수열을 정렬하는 데 필요한 최소 라운드 수 RR과 각 라운드에서 아이잔이 고를 두 위치를 구하시오. MM 라운드 안에 정렬할 수 있는 입력만 주어진다.

입력

첫째 줄에 수열의 길이 NN이 주어진다. (1≤N≤2001 \le N \le 200)

둘째 줄에 S[0],S[1],…,S[N−1]S[0], S[1], \ldots, S[N-1]이 공백으로 구분되어 주어진다. 이 NN개의 정수는 00부터 N−1N-1까지의 값을 한 번씩 갖는다.

셋째 줄에 에르맥이 계획한 라운드 수 MM이 주어진다. (1≤M≤6001 \le M \le 600)

넷째 줄부터 MM개의 줄 중 ii번째 줄에는 ii번 라운드에서 에르맥이 맞바꿀 두 위치 X[i]X[i]와 Y[i]Y[i]가 공백으로 구분되어 주어진다. (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]를 공백으로 구분해 출력한다. ii번 라운드에서는 에르맥이 X[i]X[i]와 Y[i]Y[i]를 맞바꾼 뒤에 아이잔이 P[i]P[i]와 Q[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], \ldots, P[R-1], Q[R-1] 순서로 나열한 수열이 사전순으로 가장 앞서는 답 하나만 출력한다.

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

예제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
    3
    0 3
    2 4
    1 2
    
    예상 출력
    0
    
  5. 예제 5

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