Infinite Array Swaps

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

요약
각 배열 안에서 원소를 교환해 A'i = B'i인 위치의 수를 최대로 만들고, 그 배열 A'과 B'을 하나 출력한다.
난이도

보통10점 중 6점

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

문제

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

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

동우는 두 배열에 다음 두 시행을 각각 원하는 만큼 할 수 있다. 교환하는 두 원소의 인덱스는 달라야 한다.

  • 배열 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)이 주어진다.

두 번째 줄에 배열 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을 공백으로 구분하여 출력한다.

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

예제5

  1. 예제 1

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

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

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

    입력
    8
    6 7 2 8 8 7 3 4
    8 2 3 6 4 8 7 7
    
    예상 출력
    8
    2 7 8 3 4 6 8 7
    2 7 8 3 4 6 8 7
    
  5. 예제 5

    입력
    8
    6 7 2 8 8 7 3 4
    8 2 7 6 7 3 4 8
    
    예상 출력
    8
    6 7 3 2 8 8 4 7
    6 7 3 2 8 8 4 7