외곽 껍질과 내부 껍질 사이의 면적

아직 제출이 없습니다시간 제한5초메모리 제한128 MB

문제

평면 위의 점 NN개로 이루어진 집합 S={(x0,y0),(x1,y1),,(xN1,yN1)}S = \{(x_0, y_0), (x_1, y_1), \dots, (x_{N-1}, y_{N-1})\}이 주어진다.

SS외곽 껍질 HoH_oSS의 볼록 껍질이다. SS의 모든 점을 내부나 경계에 포함하는 면적이 가장 작은 볼록 다각형을 PP라 하면, HoH_oSS의 점 중에서 PP의 꼭짓점이 되는 점만 모은 집합이다. PP의 경계 위에 있어도 꼭짓점이 아닌 점은 HoH_o에 속하지 않는다.

SS내부 껍질 HiH_iSS에서 HoH_o의 점을 모두 빼고 남은 집합 SHoS - H_o의 볼록 껍질이다.

구할 값은 HoH_o가 둘러싼 면적에서 HiH_i가 둘러싼 면적을 뺀 값이다.

꼭짓점이 3개보다 적은 껍질이나 모든 점이 한 직선 위에 놓인 껍질은 다각형을 이루지 못하므로 면적을 0으로 본다. SS의 모든 점이 한 직선 위에 있으면 두 껍질의 면적이 모두 0이고 답도 0이다.

점 8개로 이루어진 집합 SSA(2.0,5.0)A(2.0, 5.0), B(2.0,4.0)B(2.0, 4.0), C(2.0,2.0)C(2.0, 2.0), D(1.0,1.0)D(1.0, 1.0), E(4.0,1.0)E(4.0, 1.0), F(0.0,0.0)F(0.0, 0.0), G(3.0,0.0)G(3.0, 0.0), H(5.0,0.0)H(5.0, 0.0)인 경우를 보자. 외곽 껍질은 Ho={F,H,A}H_o = \{F, H, A\}이다. GG는 선분 FHFH 위에 있지만 꼭짓점이 아니어서 빠진다. SS에서 HoH_o를 빼면 SHo={B,C,D,E,G}S - H_o = \{B, C, D, E, G\}이고, 이 집합의 볼록 껍질인 내부 껍질은 Hi={D,G,E,B}H_i = \{D, G, E, B\}이다. HoH_o의 면적은 12.5, HiH_i의 면적은 6.0이므로 두 껍질 사이의 면적은 12.56.0=6.512.5 - 6.0 = 6.5이다.

입력

입력은 문제 집합 여러 개로 이루어진다.

각 문제 집합의 첫 줄에는 문제 식별자와 점의 개수 NN이 공백 하나로 구분되어 주어진다. 문제 식별자는 공백이 없는 길이 10 이하의 문자열이고, 1N10001 \le N \le 1000이다. 이어지는 NN개의 줄에는 점 하나의 xx좌표와 yy좌표가 공백 하나로 구분되어 주어진다. 각 좌표는 소수점 아래 한 자리까지 주어지는 실수이고 절댓값이 100.0 이하이다. 한 문제 집합 안에서 같은 점이 두 번 주어지지는 않는다.

다음 문제 집합은 바로 이어서 주어진다. 문제 식별자가 ZZ이고 NN이 0인 줄이 입력의 끝을 나타낸다. 문제 집합은 100개 이하이다.

출력

각 문제 집합마다 ProblemID id: area 꼴로 한 줄씩 출력한다. id는 입력으로 주어진 문제 식별자이고, area는 외곽 껍질과 내부 껍질 사이의 면적이다. 면적은 소수점 아래 넷째 자리까지 출력한다.

좌표가 소수점 아래 한 자리까지만 주어지므로 답은 항상 0.005의 배수이다. 반올림이 갈리는 경우는 생기지 않는다.