Logo
(追記) (追記ここまで)

2245번 - 배열 정리하기

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB214584132.031%

문제

1이상 N이하의 자연수로 이루어진 두 배열 A[1..N], B[1..N]이 있다. 당신은 이 배열들을 정리하여 모든 서로 다른 두 자연수 i, j(1 ≤ i, j ≤ N)에 대해서 A[i] ≠ A[j]이고 B[i] ≠ B[j]이도록 하려 한다. 즉, 각 배열에 같은 수가 중복되어 나타나지 않도록 하려 한다.

우리가 수행할 수 있는 연산은 Swap(i)라는 연산뿐이다. 이 연산은 A[i]값과 B[i]값을 서로 바꾼다. 예를 들어, A[i] = 1, B[i] = 2일 때 Swap(i)를 수행하면 A[i] = 2, B[i] = 1이 되는 것이다.

Swap연산을 가능한 한 적게 수행하여 각 배열에 같은 수가 중복되어 나타나지 않도록 하는 프로그램을 작성하시오. 만약 Swap연산을 아무리 사용해도 배열들을 정리할 수 없다면 -1을 출력한다.

입력

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 들어온다. 둘째 줄에 A[1], A[2], …, A[N]을 나타내는 N개의 자연수들이 공백으로 구분되어 들어온다. 셋째 줄에 B[1], B[2], …, B[N]을 나타내는 N개의 자연수들이 공백으로 구분되어 들어온다.

출력

첫째 줄에 사용한 Swap연산을 사용한 횟수, 또는 -1을 출력한다.

제한

예제 입력 1

10
3 2 7 4 6 5 3 9 1 1
6 8 4 10 8 10 7 5 2 9

예제 출력 1

5

예제 입력 2

10
3 1 4 1 5 9 2 6 5 3
5 8 9 7 9 3 2 3 8 4

예제 출력 2

-1

힌트

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /