포럼
문제 USACO0276

소는 왜 길을 건넜을까

설명

소는 왜 길을 건넜을까? 그 완전한 이유는 영영 알 수 없을지 모르지만, 농부 존의 소들이 실제로 길을 꽤 자주 건넌다는 것만은 확실하다. 사실 소들은 길을 너무 자주 건너다 보니 경로가 교차할 때 서로 부딪히는 일이 잦은데, 농부 존은 이 상황을 해결하고 싶어 한다.

농부 존은 \(N\)개 품종의 소를 키우며 (\(1 \leq N \leq 100,000\)), 각 들판은 특정 품종 하나만의 방목지로 지정되어 있다. 예를 들어 품종 12로 지정된 들판은 품종 12의 소만 사용할 수 있고 다른 품종은 사용할 수 없다. 농장을 가로질러 긴 도로가 지나간다. 도로의 한쪽에는 \(N\)개의 들판이 순서대로 놓여 있고(품종마다 하나씩), 도로의 다른 쪽에도 \(N\)개의 들판이 순서대로 놓여 있다(역시 품종마다 하나씩). 따라서 소가 도로를 건널 때는 자신의 품종으로 지정된 두 들판 사이를 건너게 된다.

농부 존이 좀 더 신중하게 계획했다면 도로 양쪽의 들판을 품종별로 같은 순서로 배치했을 것이고, 그러면 각 품종의 두 들판이 도로를 사이에 두고 정확히 마주 보게 되었을 것이다. 그랬다면 서로 다른 품종의 소들이 부딪히는 일 없이 도로를 건널 수 있었을 것이다. 하지만 아쉽게도 도로 양쪽의 순서가 다를 수 있으므로, 농부 존은 교차하는 품종 쌍이 있을 수 있음을 알게 된다. 서로 다른 두 품종의 쌍 \((a,b)\)는, 품종 \(a\)가 도로를 건너는 어떤 경로든 품종 \(b\)가 도로를 건너는 어떤 경로와든 반드시 교차해야 한다면 "교차" 쌍이다.

농부 존은 교차하는 품종 쌍의 수를 최소화하고 싶어 한다. 물류상의 이유로, 그는 도로 한쪽의 소들을 옮겨 그쪽 들판들에 "순환 이동"을 적용할 수 있다고 생각한다. 즉, 어떤 \(0 \leq k < N\)에 대해 모든 소가 자기 들판보다 \(k\)칸 앞의 들판으로 이동하고, 마지막 \(k\)개 들판의 소들은 처음 \(k\)개 들판을 채우도록 이동한다. 예를 들어 도로 한쪽 들판들이 품종 순서로 3, 7, 1, 2, 5, 4, 6이었는데 \(k=2\)의 순환 이동을 적용하면 새 순서는 4, 6, 3, 7, 1, 2, 5가 된다. 도로 한쪽의 들판들에 적절한 순환 이동을 적용한 뒤 존재할 수 있는 교차 품종 쌍의 최소 개수를 구하시오.

문제 출처: Brian Dean

제약

문제 출처: Brian Dean

입력 형식

입력의 첫째 줄에 \(N\)이 주어진다. 다음 \(N\)개의 줄은 도로 한쪽 들판들의 순서를 품종 ID로 나타낸다. 각 품종 ID는 \(1 \ldots N\) 범위의 정수이다. 마지막 \(N\)개의 줄은 도로 다른 쪽 들판들의 순서를 품종 ID로 나타낸다.

출력 형식

도로 한쪽(어느 쪽이든 가능)의 들판들에 순환 이동을 적용한 뒤의 교차 품종 쌍의 최소 개수를 출력한다.

Standard input / output
This problem is judged over standard input/output. The original contest used named files — if you prefer the classic interface, tick “File I/O” on the submit form and read/write these files instead:
입력을 읽을 파일 mincross.in · 출력을 쓸 파일 mincross.out
예제 1
입력
5
5
4
1
3
2
1
3
2
5
4
출력
0
문제 정보

riseoj 작성

출처 올림피아드 > USACO > 2016-2017 > February > Platinum

태그

평가 및 의견

Why Did the Cow Cross the Road

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Why Did the Cow Cross the Road

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
파일 입출력 (mincross.in / mincross.out — classic USACO interface; off = stdin/stdout)
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8