위치 y_i에서 h_i만큼 위로 튕겨 주는 트램폴린들이 있을 때, 높이 0에서 시작해 S에 도달하기까지 이동 거리의 최솟값을 구한다.
보통7그래프최단 경로힙정렬아직 제출이 없습니다시간 제한1초메모리 제한128 MB꿈에서 네모난 달이 떴다. 하늘 위로 올라가 달에게 말을 걸었다.
늦은 밤 잠에서 깨어 날개를 흔들자, 오리는 날 수 없다며 엄마에게 혼이 났다.
이제는 하늘로 날아올라 저 위에 떠 있는 멋진 달이 되고 싶다.
우리는 오리가 하늘로 올라가도록 도와야 한다. 오리는 y축만 있는 공간에 있고, 그곳에는 서로 다른 트램펄린 N개가 놓여 있다. 같은 위치에 트램펄린이 여러 개 있을 수도 있다. i번 트램펄린은 위치 yi에 있으며, 이 트램펄린을 밟으면 오리는 정확히 hi만큼 도약해서 yi+hi까지 올라간다. 그 뒤에는 중력을 받아 지면을 향해 떨어진다.
오리는 멈춰 있는 동안이나 떨어지는 도중에 원하는 트램펄린을 다시 밟을 수 있다. 도약해서 올라가는 동안에는 트램펄린을 밟을 수 없다. 도약의 꼭대기에서는 잠시 멈추므로 그 높이에 있는 트램펄린은 밟을 수 있다.
오리는 처음에 위치 0에 있고, 이동 거리를 최소로 하고 싶어 한다. 하늘에 도착할 때까지 올라간 거리와 떨어진 거리의 합이 얼마나 작을 수 있는지 구하라.
오리는 하늘의 높이 S에 닿기만 해도 하늘에 도착한 것으로 본다. 오리의 크기는 0으로 생각하며, 이동할 때 다른 트램펄린과의 충돌은 무시한다.
첫째 줄에 트램펄린의 개수 N(1≤N≤105)과 하늘의 높이를 뜻하는 정수 S(1≤S≤109)가 주어진다.
다음 N개의 줄에는 각 줄마다 i번 트램펄린의 위치 yi(0≤yi≤109)와 그 트램펄린을 밟았을 때 도약하는 높이 hi(0≤hi≤109)가 정수로 주어진다.
오리가 하늘에 도착할 때까지 이동해야 하는 거리의 최솟값을 출력한다.
오리가 하늘에 도착할 수 없으면 Ducks can't fly를 출력한다.
첫 번째 예제에서는 1번, 3번, 4번 트램펄린을 순서대로 밟으면 된다. 오리는 0에서 7, 7에서 6, 6에서 9, 9에서 10으로 이동하므로 답은 12이다. 10에 닿는 순간 하늘에 도착한 것으로 본다는 점에 유의하라.