만드는 중입니다

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

선물 퍼즐

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

요약
보드 위에 가로 레일 n개와 그 위를 미끄러지는 장애물이 있습니다. 장애물을 피해 왼쪽 위 모서리에서 오른쪽 아래 모서리까지 이어지는 가장 짧은 실의 길이를 구합니다.
난이도

어려움10점 중 8점

유형
기하, 동적 계획법, 정렬
정답자
아직 제출이 없습니다

문제

페이만의 생일 파티가 열리고 있다. 오랜 친구 케이반은 생일 선물로 퍼즐 하나를 샀다. 퍼즐은 가로 길이 ll, 세로 길이 ww인 평평한 직사각형 보드와 실 한 가닥으로 이루어져 있다. 보드에는 위쪽 가장자리로부터 서로 다른 거리에 길이 ll인 가로 레일이 nn개 놓여 있다. 각 레일에는 레일 위를 자유롭게 미끄러질 수 있는 장애물이 하나씩 있다. 그림에 보드의 예가 나와 있다. 레일은 점선으로, 장애물은 굵은 선분으로 표시되어 있다.

퍼즐을 풀려면 실로 보드의 왼쪽 위 모서리와 오른쪽 아래 모서리를 연결해야 한다. 실은 보드 안에 있어야 하며 장애물을 통과할 수 없다. 그림에는 퍼즐을 푸는 방법 하나가 나와 있다. 케이반은 페이만이 어려운 퍼즐을 잘 푼다고 믿기 때문에, 두 모서리를 연결할 수 있는 가장 짧은 실을 페이만에게 주고 싶어 한다. 케이반을 도와 그 실의 길이를 구하라.

입력

첫 줄에 세 정수 ll, ww, nn이 주어진다. ll은 보드의 가로 길이, ww는 세로 길이, nn은 레일의 개수이다. 조건은 2≤l,w≤1092 \le l, w \le 10^9이고 1≤n≤min⁡(100 000,w−1)1 \le n \le \min(100\,000, w-1)이다.

이어지는 nn개의 줄에는 정수 yiy_i와 lil_i가 주어진다. yiy_i는 ii번째 레일과 보드 위쪽 변 사이의 거리이고, lil_i는 ii번째 레일 위 장애물의 길이이다. 조건은 1≤yi≤w−11 \le y_i \le w-1이고 1≤li≤l−11 \le l_i \le l-1이다. 모든 yiy_i는 서로 다르다. 장애물과 실의 폭은 0으로 본다.

출력

장애물을 배치하여 길이 tt의 실로 왼쪽 위 모서리와 오른쪽 아래 모서리를 장애물을 피해 연결할 수 있을 때, tt의 최솟값을 한 줄에 출력한다. 상대 오차가 10−910^{-9} 이하이면 정답으로 인정한다.

예제1

  1. 예제 1

    입력
    5 6 5
    1 1
    2 3
    3 3
    4 1
    5 4
    
    예상 출력
    7.848191962583