파일 업로드

충돌 방지

profile
실행 시간 제한메모리 제한
2 초512 MB
📃 해결할 문제

농부 수찬의 소들은 움직이는 경로가 겹치면 종종 서로 부딪히는 상황이 발생하며, 이를 해결하고자 합니다.

농부 수찬은 N가지 품종의 소를 키우고 있습니다 (1 ≤ N ≤ 100,000), 그리고 각각의 밭은 한 가지 종을 위해 사용됩니다. (예 : 12번 품종 전용 밭은 12번 품종의 소만 방목할 수 있고 다른 품종의 소는 방목할 수 없습니다.) 농장을 가로지르는 긴 도로가 있습니다. 도로의 한쪽에는 N개의 밭이 있고 (품종별로 하나씩), 도로의 반대편에도 N개의 밭이 있습니다. 따라서 소는 도로를 건널 때, 특정 품종에 맞게 지정된  두 개의 밭 사이를 건너게 됩니다.

수찬이 좀 더 신중했다면 도로 양쪽에 같은 방식으로 품종별로 밭을 배치하여 품종별 두 밭이 서로 바로 길 건너편에 위치하도록 했을 것입니다. 이러면 품종이 다른 소들이 서로 부딪히지 않고 소들이 길을 건널 수 있습니다. 하지만 아쉽게도 도로 양쪽의 순서가 다를 수 있으므로 수찬은 한 쌍의 품종이 교차할 수 있다는 것을 발견합니다. 서로 다른 품종 (a, b)의 한 쌍은 도로를 가로지르는 품종 a의 경로가 도로를 가로지르는 품종 b의 경로와 반드시 교차해야 하는 경우, "교차한다"고 합니다.

수찬은 교차하는 품종 쌍의 수를 최소화하고 싶습니다.

물류상의 이유로 그는 소를 도로의 한쪽으로 이동시켜 그 쪽의 밭이 "순환적인 이동"을 겪도록 합니다.

즉, 0 ≤ k < N인 어떤 k에 대해, 각 소는 그 앞에 있는 k 개의 목초지로 이동하며, 마지막 k 개의 소들은 첫 k 개의 목초지로 이동합니다. 예를 들어, 도로 한쪽의 밭이 품종별로 3, 7, 1, 2, 5, 4, 6으로 시작하여 k=2만큼 순환 이동한다면 새로운 순서는 4, 6, 3, 7, 1, 2, 5가 됩니다. 도로 한쪽의 밭을 적절하게 순환 이동한 후, 나타날 수 있는 품종의 교차 쌍의 최소 개수를 구하세요.

💻 입력

입력의 첫 번째 줄에는 N이 주어집니다. 다음 N개의 줄에는 도로 한쪽에 있는 목초지의 종별 ID 순서를 설명합니다. 각 종별 ID는 1부터 N까지의 정수 범위 안에 있습니다. 마지막 N개의 줄에는 다른 한쪽 도로에 있는 목초지의 종별 ID 순서를 설명합니다.

🖨️ 출력

도로 한쪽의 목초지를 순환 이동한 후에 나타날 수 있는 최소 교차 쌍 수를 출력해 주세요. (어느 한쪽이든 순환 이동할 수 있습니다.)


💻 예제 입력 1
5
5
4
1
3
2
1
3
2
5
4
🖨️ 예제 출력 1
0

출처: USACO 2017 February Contest, Platinum Problem 1. Why Did the Cow Cross the Road