만드는 중입니다

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

해안 침식

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

요약
반시계 방향으로 주어진 다각형에서 맨해튼 거리 R 이내의 땅이 바다에 잠긴 뒤 남은 해안선의 총 길이를 구합니다.
난이도

어려움10점 중 8점

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

문제

당신은 지역 시청에서 일하는 프로그래머이다. 당신이 사는 마을은 관광업이 활발하며, 특히 외딴 섬에 있는 해수욕장이 인기가 많다. 이 섬의 둘레는 모래사장으로 이루어져 있지만, 최근 해안 침식으로 모래사장 면적이 줄고 있다. 사태를 심각하게 본 관광과는 당신에게 모래사장 모양 변화를 시뮬레이션해 달라고 요청했다.

시뮬레이션은 현재 모래사장 모양을 바탕으로 일정 기간이 지난 뒤의 모래사장 모양을 구한다. 간단히 하기 위해 섬의 해안선은 다각형(볼록하지 않을 수도 있음)으로 본다. 그 기간 동안 모래사장은 현재 해안선으로부터 맨해튼 거리 RR만큼 침식되어 바다에 잠긴다고 가정한다. 여기서 맨해튼 거리는 x좌표 차이와 y좌표 차이를 더한 값이다. 즉 (x1,y1)(x_1, y_1)과 (x2,y2)(x_2, y_2)의 맨해튼 거리는 ∣x1−x2∣+∣y1−y2∣|x_1 - x_2| + |y_1 - y_2|이다.

당신의 일은 입력으로 주어진 해안선으로부터 시뮬레이션 결과로 얻어지는 해안선의 길이를 구하는 프로그램을 작성하는 것이다. 해안 침식으로 섬이 둘 이상으로 나뉘면, 나뉜 섬마다 해안선 길이를 구하고 그 합을 출력한다.

해안선에 포함된 두 선분에 대해, 평행하면서 맨해튼 거리가 정확히 2R2R이 되는 경우는 없다.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋은 다음 형식으로 주어진다.

N R
x1 y1
x2 y2
...
xN yN

첫 줄에는 두 개의 음이 아닌 정수 NN (3≤N≤1003 \le N \le 100)과 RR (0<R≤1000 < R \le 100)이 주어진다. 각각 해안선의 꼭짓점 개수와 침식되는 거리를 나타낸다. 이어지는 NN개의 줄에는 꼭짓점 정보가 한 줄에 하나씩 주어진다. 꼭짓점 정보는 두 정수 xix_i, yiy_i (−10000≤xi,yi≤10000-10000 \le x_i, y_i \le 10000)로 주어지며, 해안선의 ii번째 꼭짓점 좌표를 나타낸다. 섬의 꼭짓점은 항상 반시계 방향으로 주어진다.

입력의 끝은 공백으로 구분된 0 두 개가 들어 있는 한 줄로 표시된다.

출력

각 데이터셋에 대해 침식된 해안선의 길이를 출력한다. 섬이 완전히 침식되어 사라진 경우에는 해안선 길이를 0.0으로 취급한다. 출력값은 0.01 이하의 오차가 있어도 된다. 소수점 아래 자릿수는 몇 자리로 출력해도 된다.

예제1

  1. 예제 1

    입력
    3 1
    0 0
    10 0
    5 10
    3 1
    0 0
    10 0
    0 10
    4 1
    0 0
    10 0
    10 10
    0 10
    0 0
    
    예상 출력
    22.6524758425
    23.8994949366
    32.0000000000