Finite Array Swaps

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

요약
두 배열에서 합쳐서 최대 K번(0 이상 2 이하)의 교환을 해서 A[i]=B[i]인 위치 수를 최대로 만들고, 결과 배열과 교환 순서를 출력한다.
난이도

보통10점 중 6점

유형
그리디, 구현, 해시맵
정답자
아직 제출이 없습니다

문제

이 문제는 Infinite Array Swaps와 굵은 글씨로 적힌 부분과 입출력만 다릅니다.

동우는 길이가 NN인 두 배열 A=\left\[ A\_1,A\_2,\cdots ,A\_N \right]과 B=\left\[ B\_1,B\_2,\cdots ,B\_N \right]을 가지고 있다.

동우는 두 배열에 다음 두 시행을 합쳐서 최대 KK번 할 수 있다. 교환하는 두 원소의 인덱스는 달라야 한다.

  • 배열 AA에서 두 원소를 골라 교환한다.
  • 배열 BB에서 두 원소를 골라 교환한다.

이 연산을 통해 얻은 최종 상태에서의 두 배열을 A^\prime=\left\[ A\_1^\prime,A\_2^\prime,\cdots ,A\_N^\prime \right]과 B^\prime=\left\[ B\_1^\prime,B\_2^\prime,\cdots ,B\_N^\prime \right]이라 할 때, 동우는 A_i′=B_i′A\_i^\prime=B\_i^\prime를 만족하는 쌍의 개수를 최대화하려고 한다. 두 배열이 주어질 때, 이를 최대로 하는 교환을 찾아보자.

입력

첫 번째 줄에 두 배열의 길이 N(1≤N≤105)N(1\le N\le 10^5)과 총 시행의 최대 횟수 K(0≤K≤2)K(0\le K\le 2)가 공백으로 구분되어 주어진다.

두 번째 줄에 배열 AA의 원소 A_1,A_2,⋯ ,A_N(1≤A_i≤109)A\_1,A\_2,\cdots ,A\_N(1\le A\_i\le 10^9)이 공백으로 구분되어 주어진다.

세 번째 줄에 배열 BB의 원소 B_1,B_2,⋯ ,B_N(1≤B_i≤109)B\_1,B\_2,\cdots ,B\_N(1\le B\_i\le 10^9)이 공백으로 구분되어 주어진다.

주어지는 입력은 모두 정수이다.

출력

첫 번째 줄에 A_i′=B_i′A\_i^\prime=B\_i^\prime를 만족하는 쌍의 개수의 최댓값을 출력한다.

두 번째 줄에 최종 상태에서의 배열 A′A^\prime의 원소 A_1′,A_2′,⋯ ,A_N′A\_1^\prime,A\_2^\prime,\cdots ,A\_N^\prime을 공백으로 구분하여 출력한다.

세 번째 줄에 최종 상태에서의 배열 B′B^\prime의 원소 B_1′,B_2′,⋯ ,B_N′B\_1^\prime,B\_2^\prime,\cdots ,B\_N^\prime을 공백으로 구분하여 출력한다.

네 번째 줄에 시행의 총 횟수 T(0≤T≤K)T(0\le T\le K)를 출력한다.

다음 줄부터 TT줄에 걸쳐 한 줄에 한 번의 시행을 출력한다. 시행은 일어나는 순서대로 출력해야 하며, 시행에 따라 아래 둘 중 하나를 출력한다. 배열 AA와 BB에 출력한 시행을 순서대로 적용했을 때 A′A^\prime과 B′B^\prime이 되어야 한다.

  • A ii jj: A_iA\_i와 A_jA\_j를 교환한다. (i≠j)(i\ne j)
  • B ii jj: B_iB\_i와 B_jB\_j를 교환한다. (i≠j)(i\ne j)

가능한 정답이 여러 개라면 아무거나 하나 출력한다.

예제10

  1. 예제 1

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

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

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

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

    입력
    4 2
    1 1 2 2
    2 2 1 1
    
    예상 출력
    4
    2 1 1 2
    2 1 1 2
    2
    B 2 4
    A 3 1
    
  6. 예제 6

    입력
    7 2
    8 1 4 8 1 4 2
    1 2 4 1 8 4 8
    
    예상 출력
    5
    2 1 4 8 1 4 8
    1 2 4 8 1 4 8
    2
    A 1 7
    B 4 5
    
  7. 예제 7

    입력
    3 2
    1 2 4
    2 3 1
    
    예상 출력
    2
    2 1 4
    2 1 3
    2
    A 1 2
    B 2 3
    
  8. 예제 8

    입력
    6 2
    1 2 4 8 1 4
    1 2 4 8 1 4
    
    예상 출력
    6
    1 2 4 8 1 4
    1 2 4 8 1 4
    0
    
  9. 예제 9

    입력
    6 2
    1 2 4 8 1 4
    1 2 4 8 1 4
    
    예상 출력
    6
    1 2 4 8 1 4
    1 2 4 8 1 4
    1
    A 1 5
    
  10. 예제 10

    입력
    6 2
    1 2 4 8 1 4
    1 2 4 8 1 4
    
    예상 출력
    6
    1 2 4 8 1 4
    1 2 4 8 1 4
    2
    A 1 5
    A 1 5