삼각 분할

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

요약
정n각형의 모든 삼각분할 가운데 지름이 가장 작은 값을 구한다. 지름은 두 삼각형 사이를 이동할 때 건너는 변의 최대 개수이다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 조합론, 수학
정답자
아직 제출이 없습니다

문제

정nn각형 PP에 PP의 두 꼭짓점을 잇고 서로 교차하지 않는 선분을 추가하면 PP를 n−2n-2개의 삼각형으로 분할할 수 있다. 예를 들어 정사각형은 두 개의 삼각형으로, 정오각형은 세 개의 삼각형으로, 정육각형은 네 개의 삼각형으로 분할할 수 있다. 이렇게 얻은 삼각형의 집합을 PP의 삼각 분할이라 한다. nn이 3보다 크면 PP의 삼각 분할은 둘 이상 존재한다.

PP의 삼각 분할 TT가 정해지면, TT의 두 삼각형 aa와 bb 사이의 거리는 aa에서 bb로 이동할 때 인접한 두 삼각형의 경계를 넘는 횟수로 정의된다. 이때 이동하는 동안 항상 다각형 PP의 내부에 있어야 하며, PP의 경계를 넘어서 이동할 수는 없다.

예를 들어, 그림 J.1에 나타난 삼각 분할에서 aa와 dd의 거리는 3이다. aa에서 dd로 가려면 삼각형 aa, bb, cc, dd를 차례로 지나야 하고, 삼각형 사이의 경계를 세 번 넘어야 하기 때문이다.

그림 J.1 정육각형의 삼각 분할

삼각 분할 TT의 지름은 TT의 모든 삼각형 쌍 사이 거리의 최댓값이다. 정nn각형 PP의 삼각 분할 중 지름이 최소인 것을 찾고, 그 지름을 출력하는 프로그램을 작성하라.

입력

입력은 표준 입력에서 받는다. 첫째 줄에 정nn각형의 변의 개수 nn이 주어진다. (3≤n≤1 000 0003 \le n \le 1\,000\,000)

출력

출력은 표준 출력에 한다. 정nn각형의 삼각 분할 중 지름의 최솟값을 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    3
    
    예상 출력
    0
    
  2. 예제 2

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

    입력
    6
    
    예상 출력
    2