만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

라즈베리 파이

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

요약
원형으로 놓인 M개 조각에서 각 참가자의 조각에 원하는 라즈베리가 오도록 시계 방향 이동 횟수를 최소로 구하고, 불가능하면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
그리디, 배열, 시뮬레이션
정답자
아직 제출이 없습니다

문제

한별이는 3년 만에 오프라인으로 개최되는 UCPC 본선을 맞아 특별한 이벤트를 계획했다. 참가자들과 라즈베리 파이를 나눠 먹는 것이다. 한별이는 원기둥 모양의 파이를 모든 조각이 밑면이 부채꼴인 기둥 모양이 되도록 MM등분하고, 각 조각 위에 라즈베리를 하나씩 놓았다. 그리고 각 조각에 시계 방향 순서대로 11번에서 MM번까지 번호를 붙였다.

한별이는 대회에 총 NN(N≤MN\leq M)명의 참가자가 참가한다는 말을 듣고, 각 참가자에게 몇 번째 조각을 나눠줄지 미리 정해 두었다. 모든 참가자가 대회장에 도착해 한별이가 계획대로 파이 조각을 나눠주려는 순간, 한 참가자가 파이 위의 라즈베리 하나를 가리키며 "나에게 저 라즈베리를 주지 않는다면 문제를 10분 만에 다 풀어버리겠다!"라고 선언했다. 그러자 다른 참가자들도 하나둘씩 원하는 라즈베리를 말하기 시작했고, 결국 모든 참가자가 먹고 싶은 라즈베리를 하나씩 말하고 돌아갔다.

한별이는 참가자들의 요구를 들어주기 위해 파이에 장식된 라즈베리의 위치를 조정하려 한다. 그러나 라즈베리는 환경 변화에 민감해서 아래 방법으로 옮기지 않으면 금방 상해 버린다.

  • 조각 하나를 선택하여, 그 조각에 있는 모든 라즈베리를 바로 다음 조각으로 옮긴다.

여기서 11번 조각의 바로 다음 조각은 22번 조각, 22번 조각의 바로 다음 조각은 33번 조각, ⋯\cdots, M−1M-1번 조각의 바로 다음 조각은 MM번 조각, MM번 조각의 바로 다음 조각은 11번 조각이다.

라즈베리는 상하면 다른 라즈베리에도 나쁜 영향을 주므로, 한별이는 어떤 라즈베리도 상하지 않도록 하면서 라즈베리를 최소한으로 옮겨 모든 참가자의 요구를 들어주려고 한다. 대회가 10분 만에 끝나 버리는 참사를 막기 위해 한별이를 도와주자.

참가자들은 자신이 원하는 라즈베리와 다른 라즈베리를 같이 먹게 되는 것은 신경 쓰지 않는다. 라즈베리를 옮길 때 라즈베리가 여러 개 있는 조각을 선택하더라도 이동 횟수는 한 번으로 친다.

입력

첫 번째 줄에는 파이의 조각 수 MM과 대회 참가자의 수 NN이 공백으로 구분되어 주어진다. (1≤N≤M≤300 000)(1\leq N\leq M\leq 300\,000)

두 번째 줄에는 NN개의 정수 a1,⋯ ,aNa_1,\cdots ,a_N이 공백으로 구분되어 주어진다. (1≤ai≤M)(1\leq a_i\leq M) aia_i는 ii번째 참가자에게 배정한 파이 조각의 번호이다. 모든 aia_i는 서로 다르다.

세 번째 줄에는 NN개의 정수 b1,⋯ ,bNb_1,\cdots ,b_N이 공백으로 구분되어 주어진다. (1≤bi≤M)(1\leq b_i\leq M) bib_i는 ii번째 참가자가 원하는 라즈베리가 위치한 파이 조각의 번호이다.

출력

라즈베리를 상하지 않게 하면서 모든 참가자의 요구를 들어줄 수 있으면 라즈베리 이동 횟수의 최솟값을 출력한다. 그렇지 않으면 −1-1을 출력한다.

예제3

  1. 예제 1

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

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

    입력
    4 3
    1 3 4
    1 1 3
    
    예상 출력
    -1