만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

화성 배구

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

요약
각 변이 좌표축에 평행한 다각형이 주어질 때, 모든 변의 연장선 위에 하나 이상의 심판이 서도록 court 밖에 세울 심판의 최소 수를 구한다.
난이도

보통10점 중 6점

유형
기하, 그래프, 조합론, 해시맵
정답자
아직 제출이 없습니다

문제

지구와 마찬가지로 화성에서도 배구는 인기 있는 운동이다. 규칙도 지구 배구와 같아서 각 팀은 자기 쪽 코트 바닥에 공이 닿지 않도록 막아야 한다. 큰 차이는 코트 모양 하나다. 화성의 코트는 직사각형일 필요가 없다. 모든 변이 좌표축과 평행하기만 하면 어떤 다각형이든 코트가 된다.

공이 코트 선 아주 가까이에 떨어지면 판정 시비가 붙는다. 그래서 화성 배구 경기에는 모두 선심이 배치된다. 선심은 공이 코트 선 근처에 떨어지는 순간을 지켜보고, 공이 코트 안에 떨어졌는지 밖에 떨어졌는지 알린다.

선심은 어떤 변을 포함하는 직선 위에 서 있을 때만 그 변을 볼 수 있다. 한 선심이 서 있는 위치를 여러 변의 직선이 함께 지나면 그 변을 모두 동시에 볼 수 있다. 한 선심이 맡은 변 가운데 서로 수직인 변이 있어도 된다. 안전을 위해 은하계 화성 배구 연맹은 다음 두 규정을 두었다.

  • 선심은 경기 중에 움직이지 않고 제자리에 서 있어야 한다.
  • 선심은 코트 내부에 설 수 없고, 코트의 선 위에도 설 수 없다.

아래 그림은 가능한 코트 모양 세 가지와 각 코트에 필요한 최소 선심 배치를 보여 준다. 코트 (a)는 선심 네 명, 코트 (b)는 일곱 명, 코트 (c)는 여섯 명이 필요하다.

코트 모양 세 가지와 최소 선심 배치

코트 모양이 주어질 때, 코트의 모든 변을 선심이 적어도 한 명씩 지켜보게 하려면 선심이 최소 몇 명 필요한지 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 코트의 변의 개수를 나타내는 짝수 정수 NN이 주어진다 (4≤N≤1004 \le N \le 100). 이어지는 NN개의 줄에는 코트 꼭짓점의 좌표를 나타내는 두 정수 XiX_i와 YiY_i가 주어진다 (−109≤Xi,Yi≤109-10^9 \le X_i, Y_i \le 10^9). 좌표는 코트를 따라가는 순서대로 주어진다. 1≤i<N1 \le i < N인 ii에 대해 (Xi,Yi)(X_i, Y_i)와 (Xi+1,Yi+1)(X_{i+1}, Y_{i+1})이 코트의 한 변을 이루고, (XN,YN)(X_N, Y_N)은 (X1,Y1)(X_1, Y_1)과 한 변을 이룬다. 코트의 인접한 두 변은 항상 서로 수직이고, 주어지는 다각형은 항상 단순 다각형이다.

입력의 끝은 N=0N = 0인 줄로 표시한다. 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 필요한 선심의 최소 인원을 한 줄에 정수 하나로 출력한다.

예제2

  1. 예제 1

    입력
    4
    0 0
    9 0
    9 18
    0 18
    8
    0 0
    0 1
    1 1
    1 -1
    -2 -1
    -2 1
    -1 1
    -1 0
    12
    1 0
    2 0
    2 1
    3 1
    3 2
    2 2
    2 3
    1 3
    1 2
    0 2
    0 1
    1 1
    0
    
    예상 출력
    4
    7
    6
    
  2. 예제 2

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