전쟁

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

요약
지렁이 목표 순열이 주어질 때 마지막 사람을 맨 앞으로 옮기는 조작만으로 승리하는 인간 순서로 바꾸는 최소 횟수를 구합니다.
난이도

보통10점 중 7점

유형
배열, 정렬, 구현
정답자
아직 제출이 없습니다

문제

인류는 외계에서 온 거대한 벌레들과 최후의 결전을 앞두고 있다. 정확히 nn마리의 벌레와 nn명의 인간이 싸운다.

첩보에 따르면 ii번째 인간은 오직 ii번째 벌레만 이길 수 있다.

장군은 인간들을 일렬로 세웠고, ii번째 인간이 aia_i번째 벌레와 싸운다는 것을 알고 있다. 모든 인간이 자신의 싸움에서 이겨야 인류가 전쟁에서 이긴다.

처음에 장군은 ii번째 인간을 줄의 ii번째 자리에 세웠다. 전투가 다가오고 있어 장군은 줄의 순서를 바꿔야 하는데, 줄의 맨 뒤에 있는 사람을 줄의 맨 앞으로 가져오는 것만 할 수 있고, 이 행동은 한 번에 1초가 걸린다. 이 행동을 하면 나머지 사람의 위치는 모두 하나씩 뒤로 밀린다.

장군이 인간들을 전쟁에서 이길 수 있는 배치로 만들기 위해 최소 몇 초가 필요한지 계산하는 프로그램을 작성하라.

입력

첫째 줄에 싸우는 전사의 수인 정수 nn이 주어진다. (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5)

둘째 줄에 a1,a2,…,ana_1, a_2, \ldots, a_n인 nn개의 서로 다른 정수가 주어지며, aia_i는 줄의 ii번째에 있는 인간과 싸우는 벌레의 번호이다. (1≤ai≤n1 \le a_i \le n, i≠ji \ne j이면 ai≠aja_i \ne a_j)

출력

장군이 인간들을 이기게 하기 위해 최소 몇 초를 써야 하는지를 나타내는 수 kk를 출력한다. 벌레를 이기는 것이 불가능하면 "-1"을 출력한다.

힌트

첫 번째 예시에서 전사들은 다음과 같이 싸운다:

벌레    1    6    4    2    3    5
인간    1    2    3    4    5    6

1번 벌레가 싸움에서 이기므로 인류는 전쟁에서 이길 수 없다. 첫 번째 자리 이동 후 싸움은 다음과 같다:

벌레    1    6    4    2    3    5
인간    6    1    2    3    4    5

여기서는 5번 벌레가 이기므로 자리 이동을 더 해야 한다. 두 번째 자리 이동 후에는 다음과 같다:

벌레    1    6    4    2    3    5
인간    5    6    1    2    3    4

여기서는 2, 3, 6번 벌레가 이긴다. 따라서 자리 이동을 한 번 더 하면 인류가 전쟁에서 이긴다.

벌레    1    6    4    2    3    5
인간    4    5    6    1    2    3

예제2

  1. 예제 1

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

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