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