마지막 전투
면접 대비시간 제한1초메모리 제한512 MB
순열 a가 고정되어 있을 때, 항등 배열을 오른쪽으로 k번 회전시킨 배치가 모든 위치에서 a[i]와 다른 값을 갖도록 하는 최소 k를 구하거나, 불가능하면 -1을 출력한다.
문제
머지않아 인간과 화성인 사이에 마지막 전투가 벌어진다. 인간의 첩자는 화성인에게 명의 병사가 남아 있다는 사실을 알아냈다. 또한 인간과 화성인 모두 정확히 명의 전사가 있다는 것도 밝혀졌다.
과거 전투의 경험에 따르면, 인간은 번호 인 화성인만이 번째 인간을 이길 수 있다는 것을 알고 있다.
지휘관은 인간을 한 줄로 세우기로 했다. 화성인의 계획을 알아낸 지휘관은 줄의 번째 위치에 있는 인간이 번호 인 화성인과 싸운다는 것을 알아냈다. 모든 전사가 자신의 전투에서 승리가 보장될 때만 인간이 승리한다.
먼저 지휘관은 번째 인간을 줄의 번째 위치에 세웠다. 그 후 그는 전투까지 시간이 얼마 남지 않았고, 줄을 재편성하지 않으면 인간이 질 수 있다는 것을 깨달았다. 1초 동안 그는 마지막 자리에 있는 사람을 줄의 맨 앞으로 옮길 수 있으며, 이 연산 후에 이 전사는 첫 번째 위치에 서고 나머지 전사 각각의 위치 번호는 1씩 증가한다.
인간이 승리하도록 줄을 재편성하는 데 걸리는 최소 시간을 구하도록 도와주자.
입력
첫 번째 줄에는 정수 이 주어진다. 이는 각 진영의 전사 수이다 ().
두 번째 줄에는 개의 서로 다른 정수 이 주어지며, 는 줄의 번째 위치에 있는 인간이 싸울 화성인의 번호이다 (, 이면 ).
출력
인간이 승리하도록 지휘관이 줄을 재편성할 수 있는 최소 시간(초) 를 한 줄에 출력한다. 인간이 화성인을 이길 수 없다면 <<>>을 출력한다.
힌트
첫 번째 예제에서 처음에 전사들은 다음과 같이 서로 마주 보고 있다:
화성인 번호 과 가 전투에서 이기므로 인간이 진다. 첫 번째 이동 후 전사들의 줄은 다음과 같이 바뀐다:
이제 화성인 와 이 전투에서 이기므로, 지휘관은 마지막 사람을 다시 줄의 맨 앞으로 옮겨야 한다. 그 후 전사들의 줄은 모든 인간이 전투에서 이기도록 바뀐다.