아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

해변 자르기

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

요약
해안선을 나타내는 폴리라인이 주어질 때, 거리가 L 이하인 두 꼭짓점을 골라 해안선 아래로 연결해 얻는 최대 해변 넓이를 구한다.
난이도

보통10점 중 7점

유형
기하, 투 포인터, 누적 합
정답자
아직 제출이 없습니다

문제

해안선은 자기 자신과 교차하지 않는 꺾은선으로 나타내며, 꼭짓점 (x1,y1),(x2,y2),…,(xN,yN)(x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N) 을 순서대로 이은 것이다. xx 좌표는 항상 증가한다(xi<xi+1x_i < x_{i+1}). 바다는 이 꺾은선의 위쪽에, 해변은 아래쪽에 있다.

두 꼭짓점을 길이가 LL 이하인 하나의 선분으로 이을 수 있다. 이 선분과 해안선 사이에 둘러싸이는 해변의 넓이가 최대가 되도록 두 꼭짓점을 고르시오. 선분은 절대로 바다 안으로 들어가서는 안 된다. 즉 해안선에 닿는 것은 괜찮지만 그 위쪽으로 넘어가서는 안 된다.

입력

첫 줄에 두 정수 NN 과 LL 이 주어진다. 이어서 NN 개의 꼭짓점이 x1 y1 x2 y2 … xN yNx_1\ y_1\ x_2\ y_2\ \ldots\ x_N\ y_N 순서의 정수 쌍으로 주어진다(공백과 줄바꿈은 자유롭게 섞여 있을 수 있다).

출력

둘러쌀 수 있는 해변의 최대 넓이를 출력한다(00 일 수도 있다). 모든 꼭짓점의 좌표가 정수이므로 이 넓이는 항상 12\frac{1}{2} 의 정수배이다. 반올림 없이 정확히 출력한다. 넓이가 정수이면 정수만 출력하고, 그렇지 않으면 소수 첫째 자리 .5.5 를 붙여서 출력한다(예: 1.51.5).

제한

  • 3≤N≤50003 \le N \le 5000
  • 0≤xi,yi,L≤10000000 \le x_i, y_i, L \le 1000000
  • 모든 ii 에 대해 xi<xi+1x_i < x_{i+1}

예제2

  1. 예제 1

    입력
    5 4 
    0 0 1 3 2 0 3 3 4 0
    
    예상 출력
    6
    
  2. 예제 2

    입력
    3 10
    100 100 101 0 102 100
    
    예상 출력
    0