정렬하기
시간 제한1초메모리 제한1024 MB
각 게임마다 두 위치를 바꾼 뒤, 에르막이 정렬을 최대한 늦출 때 아이잔이 수열을 정렬하는 최소 라운드 수를 구하고, 끝나지 않으면 -1을 출력합니다.
문제
에르맥과 아이잔은 길이 인 수열 로 게임을 한다. 수열 에는 0부터 까지의 정수가 한 번씩만 등장한다. 게임의 목표는 수열을 오름차순으로 정렬하는 것이다. 아이잔은 수열을 정렬하려고 하고, 에르맥은 불가피한 경우가 아니라면 최대한 오랫동안 정렬되지 않게 하려고 한다.
한 게임에서 각 라운드마다 에르맥이 두 수를 정해 서로의 위치를 바꾸고, 이어서 아이잔이 두 수를 정해 서로의 위치를 바꾼다. 에르맥과 아이잔은 같은 수를 정해 위치가 바뀌지 않게 할 수도 있다. 해당 라운드에서 수열이 오름차순으로 정렬되면 게임은 끝난다. 처음부터 정렬되어 있으면 필요한 라운드 수는 0이다.
게임을 여러 번 하기 위해 에르맥과 아이잔은 수열 를 번 변형하면서 게임을 한다. 길이 인 배열 와 가 주어진다. 게임은 한 순서대로 0부터 까지 번호를 붙인다. 번째 게임을 시작하기 전에, 번째 게임을 시작했을 때의 수열에서 번째 위치의 수와 번째 위치의 수를 서로 바꾼다. 그 새 수열로 게임을 한다. 번째 게임을 시작했을 때의 수열은 로 정의한다.
각 게임에 대해 아이잔이 특정 라운드가 지난 후 반드시 수열을 정렬하는지 판단하고, 그렇다면 필요한 라운드 수의 최솟값을 구한다.
입력
첫 줄에 이 주어진다. ()
둘째 줄에 수열 의 개의 수가 공백으로 구분되어 주어진다.
셋째 줄에 이 주어진다. ()
이어서 개의 줄에 와 가 공백으로 구분되어 주어진다. ()
출력
개의 게임에 대해 게임이 일어난 순서대로, 게임이 무한히 진행 가능하면 , 그렇지 않으면 필요한 최소 라운드 수를 공백으로 구분하여 출력한다.