다각형의 넓이

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

요약
정점이 격자점인 단순 다각형이 주어질 때 넓이가 0이 아니게 겹치는 단위 정사각형의 개수를 구합니다.
난이도

보통10점 중 5점

유형
기하, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

오늘 요코(Yoko)의 수학 숙제는 xy 평면 위에 있는 다각형들의 넓이를 계산하는 것이었습니다. 꼭짓점은 모두 격자점 위에 놓여 있습니다(즉, 정수 좌표를 가집니다).

여러분이 할 일은 수학도 컴퓨터 프로그래밍도 잘하지 못하는 요코가 숙제를 끝내도록 돕는 것입니다. 다각형은 그 꼭짓점들의 좌표를 나열하여 주어집니다. 여러분의 프로그램은 다각형과 겹치는 단위 정사각형(그 꼭짓점 또한 격자점인 1×11 \times 1 정사각형)의 개수를 세어 그 넓이를 근사해야 합니다. 정확히 말하면, 단위 정사각형이 "다각형과 겹친다"는 것은 그 둘의 교집합이 0이 아닌 넓이를 가질 때, 그리고 오직 그때뿐입니다. 아래 그림에서 점선으로 된 가로·세로 선은 격자선이고, 실선은 다각형의 변입니다. 색칠된 단위 정사각형이 다각형과 겹치는 것으로 간주됩니다. 이 다각형에 대해 여러분의 프로그램은 55를 출력해야 합니다(보다시피 색칠된 단위 정사각형의 개수는 55입니다).

그림 1: 다각형과, 그것에 겹치는 단위 정사각형들

입력

입력은 다각형들을 차례로 기술하고, 마지막에는 00 하나만 들어 있는 종료 줄이 옵니다.

각 다각형의 기술은 꼭짓점의 개수를 나타내는 정수 mm (m≥3m \ge 3) 하나가 들어 있는 줄로 시작합니다. 그 뒤로 mm개의 줄이 이어지며, 각 줄에는 한 꼭짓점의 좌표인 두 정수 xx와 yy가 들어 있고 공백 하나로 구분됩니다. 이 mm개 줄 중 ii번째 줄은 ii번째 꼭짓점의 좌표를 나타냅니다(i=1,⋯ ,mi = 1, \cdots, m). 각 i=1,⋯ ,m−1i = 1, \cdots, m-1에 대해, ii번째 꼭짓점과 (i+1)(i+1)번째 꼭짓점은 변으로 연결됩니다. mm번째 꼭짓점과 첫 번째 꼭짓점도 변으로 연결됩니다(즉, 곡선은 닫혀 있습니다). 변들은 꼭짓점에서만 만납니다. 어떤 세 변도 한 꼭짓점을 공유하지 않습니다(즉, 곡선은 단순합니다). 다각형의 개수는 100100개를 넘지 않습니다. 각 다각형에서 꼭짓점의 개수 mm은 100100을 넘지 않습니다. 모든 좌표 xx와 yy는 −2000≤x≤2000-2000 \le x \le 2000과 −2000≤y≤2000-2000 \le y \le 2000을 만족합니다.

출력

출력은 다각형의 개수만큼의 줄로 이루어져야 합니다. kk번째 출력 줄에는 위에서 설명한 방식으로 근사한 kk번째 다각형의 넓이인 정수를 출력해야 합니다. 공백을 포함하여 다른 어떤 문자도 출력해서는 안 됩니다.

예제1

  1. 예제 1

    입력
    4
    5 -3
    1 0
    1 7
    -7 -1
    3
    5 5
    18 5
    5 10
    3
    -5 -5
    -5 -10
    -18 -10
    5
    0 0
    20 2
    11 1
    21 2
    2 0
    0
    
    예상 출력
    55
    41
    41
    23