Infinite Array Swaps
시간 제한1초메모리 제한1024 MB
각 배열 안에서 원소를 교환해 A'i = B'i인 위치의 수를 최대로 만들고, 그 배열 A'과 B'을 하나 출력한다.
문제
이 문제는 Finite Array Swaps와 굵은 글씨로 적힌 부분과 입출력만 다릅니다.
동우는 길이가 인 두 배열 A=\left\[ A\_1,A\_2,\cdots ,A\_N \right]과 B=\left\[ B\_1,B\_2,\cdots ,B\_N \right]을 가지고 있다.
동우는 두 배열에 다음 두 시행을 각각 원하는 만큼 할 수 있다. 교환하는 두 원소의 인덱스는 달라야 한다.
- 배열 에서 두 원소를 골라 교환한다.
- 배열 에서 두 원소를 골라 교환한다.
이 연산을 통해 얻은 최종 상태에서의 두 배열을 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]이라 할 때, 동우는 를 만족하는 쌍의 개수를 최대화하려고 한다. 두 배열이 주어질 때, 이를 최대로 하는 교환을 찾아보자.
입력
첫 번째 줄에 두 배열의 길이 이 주어진다.
두 번째 줄에 배열 의 원소 이 공백으로 구분되어 주어진다.
세 번째 줄에 배열 의 원소 이 공백으로 구분되어 주어진다.
주어지는 입력은 모두 정수이다.
출력
첫 번째 줄에 를 만족하는 쌍의 개수의 최댓값을 출력한다.
두 번째 줄에 최종 상태에서의 배열 의 원소 을 공백으로 구분하여 출력한다.
세 번째 줄에 최종 상태에서의 배열 의 원소 을 공백으로 구분하여 출력한다.
가능한 정답이 여러 개라면 아무거나 하나 출력한다.