해안 침식
시간 제한8초메모리 제한512 MB
반시계 방향으로 주어진 다각형에서 맨해튼 거리 R 이내의 땅이 바다에 잠긴 뒤 남은 해안선의 총 길이를 구합니다.
문제
당신은 지역 시청에서 일하는 프로그래머이다. 당신이 사는 마을은 관광업이 활발하며, 특히 외딴 섬에 있는 해수욕장이 인기가 많다. 이 섬의 둘레는 모래사장으로 이루어져 있지만, 최근 해안 침식으로 모래사장 면적이 줄고 있다. 사태를 심각하게 본 관광과는 당신에게 모래사장 모양 변화를 시뮬레이션해 달라고 요청했다.
시뮬레이션은 현재 모래사장 모양을 바탕으로 일정 기간이 지난 뒤의 모래사장 모양을 구한다. 간단히 하기 위해 섬의 해안선은 다각형(볼록하지 않을 수도 있음)으로 본다. 그 기간 동안 모래사장은 현재 해안선으로부터 맨해튼 거리 만큼 침식되어 바다에 잠긴다고 가정한다. 여기서 맨해튼 거리는 x좌표 차이와 y좌표 차이를 더한 값이다. 즉 과 의 맨해튼 거리는 이다.
당신의 일은 입력으로 주어진 해안선으로부터 시뮬레이션 결과로 얻어지는 해안선의 길이를 구하는 프로그램을 작성하는 것이다. 해안 침식으로 섬이 둘 이상으로 나뉘면, 나뉜 섬마다 해안선 길이를 구하고 그 합을 출력한다.
해안선에 포함된 두 선분에 대해, 평행하면서 맨해튼 거리가 정확히 이 되는 경우는 없다.
입력
입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋은 다음 형식으로 주어진다.
N R
x1 y1
x2 y2
...
xN yN
첫 줄에는 두 개의 음이 아닌 정수 ()과 ()이 주어진다. 각각 해안선의 꼭짓점 개수와 침식되는 거리를 나타낸다. 이어지는 개의 줄에는 꼭짓점 정보가 한 줄에 하나씩 주어진다. 꼭짓점 정보는 두 정수 , ()로 주어지며, 해안선의 번째 꼭짓점 좌표를 나타낸다. 섬의 꼭짓점은 항상 반시계 방향으로 주어진다.
입력의 끝은 공백으로 구분된 0 두 개가 들어 있는 한 줄로 표시된다.
출력
각 데이터셋에 대해 침식된 해안선의 길이를 출력한다. 섬이 완전히 침식되어 사라진 경우에는 해안선 길이를 0.0으로 취급한다. 출력값은 0.01 이하의 오차가 있어도 된다. 소수점 아래 자릿수는 몇 자리로 출력해도 된다.