QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 256 MB Total points: 100

#1196. 재미있는 영역

Statistics

Ciel 박사는 다각형 해안선을 가진 평면상의 섬에 살고 있습니다. 그녀는 섬에서 나선 경로를 따라 산책하는 것을 좋아합니다. 여기서 다음 두 조건을 모두 만족하는 경로를 나선 경로라고 합니다.

  • 경로는 자기 교차가 없는 단순한 평면 꺾은선입니다.

  • 모든 꼭짓점에서 선분의 방향이 시계 방향으로 회전합니다.

아래에는 네 경로가 그려져 있습니다. 원 표시는 출발점을 나타내고 화살촉은 경로의 도착점을 나타냅니다. 이 경로들 중 가장 왼쪽 경로만 나선 경로입니다.

problem_1196_cf701760616e3bfd81e089fed289c4fe.png

Ciel 박사는 섬의 해안선의 모든 꼭짓점에 대해, 그 점에서 출발하여 해당 꼭짓점에서 끝나며 해안선을 가로지르지 않는 나선 경로가 존재하면 그 점을 재미있는 점이라고 합니다. 이때 나선 경로는 해안선에 닿거나 해안선과 겹쳐도 됩니다.

다음 그림에서 바깥쪽 다각형은 해안선을 나타냅니다. 별로 표시된 점은 재미있는 점이지만, 십자로 표시된 점은 재미있는 점이 아닙니다. 별에서 시작하는 점선 꺾은선은 해안선의 꼭짓점에서 끝나는 유효한 나선 경로입니다.

problem_1196_52f14d8731352232cdc93aa21240b90d.png

모든 재미있는 점의 집합은 연결된 영역을 이룬다는 것을 증명할 수 있습니다. 이 영역은 비어 있을 수도 있으며, 재미있는 영역이라고 부릅니다. 해안선이 주어졌을 때, 재미있는 영역의 넓이를 계산하는 프로그램을 작성하세요.

입력

입력의 첫 줄에는 해안선을 나타내는 다각형의 꼭짓점 수인 정수 $n$이 주어집니다($3 \le n \le 2000$). 다음 $n$개의 줄에는 각각 두 정수 $x_i$, $y_i$가 주어지며, 반시계 방향 순서로 다각형의 $i$번째 꼭짓점의 좌표 $(x_i,y_i)$를 나타냅니다. $x_i$와 $y_i$는 모두 $0$ 이상 $10^4$ 이하입니다. 좌표계의 $x$축은 오른쪽을, $y$축은 위쪽을 향합니다. 다각형은 단순합니다. 즉, 자기 자신과 교차하거나 닿지 않습니다. 다각형은 볼록하지 않을 수도 있습니다. 각 꼭짓점의 내각은 정확히 $180$도가 아님이 보장됩니다.

출력

재미있는 영역의 넓이를 한 줄에 출력하세요. 절대 오차 또는 상대 오차가 $10^{-7}$보다 작으면 허용됩니다.

예제

입력 1

4
10 0
20 10
10 30
0 10

출력 1

300.00

입력 2

10
145 269
299 271
343 193
183 139
408 181
356 324
176 327
147 404
334 434
102 424

출력 2

12658.3130191

입력 3

6
144 401
297 322
114 282
372 178
197 271
368 305

출력 3

0.0

참고

아래 그림은 주어진 세 예제를 시각화한 것입니다. 바깥쪽 다각형은 섬의 해안선에 해당합니다. 재미있는 영역은 회색으로 표시되어 있습니다.

problem_1196_545a943af673d62e792d21846d008699.png

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.