생일

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

요약
어린이들이 원탁에 1번부터 n번까지 차례로 앉아 있고, 주어진 순환 순서로 자리를 바꿀 때 한 명이 원을 따라 이동하는 최대 거리를 최소화한다.
난이도

어려움10점 중 8점

유형
이분 탐색, 정렬, 수학, 구현
정답자
아직 제출이 없습니다

문제

오늘은 바이트만(Byteman)의 생일입니다. 생일 파티에는 바이트만을 포함해 nn명의 아이들이 있으며, 11번부터 nn번까지 번호가 매겨져 있습니다. 부모님은 큰 원탁과 그 둘레에 놓인 nn개의 의자를 준비했습니다.

아이들은 차례대로 앉습니다. 11번 아이가 아무 자리에나 앉고, 22번 아이는 그 왼쪽 자리에, 33번 아이는 다시 그 왼쪽 자리에 앉는 식으로 이어집니다. 마지막으로 nn번 아이가 11번과 n−1n-1번 사이에 남은 자리에 앉습니다.

어떤 아이들은 특정한 아이와 너무 가까이 앉으면 시끄러워지기 때문에, 부모님은 순열 p1,p2,…,pnp_1, p_2, \ldots, p_n(11부터 nn까지의 서로 다른 정수)으로 주어지는 특정한 원형 순서로 아이들을 다시 앉히려고 합니다. 즉, p1p_1번 아이는 pnp_n번과 p2p_2번 사이에, pip_i번 아이(i=2,3,…,n−1i = 2, 3, \ldots, n-1)는 pi−1p_{i-1}번과 pi+1p_{i+1}번 사이에, pnp_n번 아이는 pn−1p_{n-1}번과 p1p_1번 사이에 앉아야 합니다. p1p_1번 아이는 pnp_n번의 왼쪽에 앉을 수도 있고 오른쪽에 앉을 수도 있습니다. 즉 이 원형 순서는 두 회전 방향 중 어느 쪽으로도 실현될 수 있습니다.

원하는 순서를 만들기 위해 각 아이는 원탁을 따라 왼쪽 또는 오른쪽으로 몇 칸 이동합니다. 부모님은 아이마다 이동 방향과 거리(옮기는 자리 수)를 정합니다. 신호가 울리면 모든 아이가 동시에 일어나 새 자리로 이동해 앉습니다.

한 번의 재배치에서 혼란도(mess) 는 어떤 한 아이가 이동한 자리 수의 최댓값입니다. 원하는 원형 순서를 만드는 모든 재배치 중에서, 부모님은 혼란도가 가장 작은 방법을 찾고자 합니다.

nn과 목표 순열을 읽어 가능한 최소 혼란도를 출력하는 프로그램을 작성하세요.

입력

첫째 줄에 정수 nn(1≤n≤1061 \le n \le 10^6)이 주어집니다.

둘째 줄에 아이들의 원하는 원형 순서를 나타내는 nn개의 정수 p1,p2,…,pnp_1, p_2, \ldots, p_n이 공백 하나로 구분되어 주어집니다. 이 수들은 {1,2,…,n}\{1, 2, \ldots, n\}의 순열입니다.

출력

가능한 최소 혼란도를 정수 하나로 출력합니다.

힌트

n=6n = 6이고 목표 순서가 3 4 5 1 2 63\ 4\ 5\ 1\ 2\ 6인 경우입니다. 왼쪽 그림은 처음 배치를 보여 줍니다. 한 가지 최적 재배치(가운데 그림)에서는 11번과 22번 아이가 한 칸, 33번과 55번 아이가 두 칸 이동하고, 44번과 66번 아이는 제자리에 있습니다. 이때 요구되는 순서가 성립합니다. 33은 66과 44 사이, 44는 33과 55 사이, 55는 44와 11 사이, 11은 55와 22 사이, 22는 11과 66 사이, 66은 22와 33 사이에 있습니다. 오른쪽 그림은 또 다른 최적 배치입니다. 두 경우 모두 어떤 아이도 두 칸을 넘게 이동하지 않으므로 최소 혼란도는 22입니다.

예제2

  1. 예제 1

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

    입력
    5
    1 2 3 4 5
    
    예상 출력
    0