시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
다해는 산악자전거 타기를 즐긴다. 때로는 오래 달리고 싶지만, 이번에는 산의 출발 지점에서 도착 지점까지 가능한 한 짧은 시간 안에 이동하려고 한다.
산은 R행 C열 격자로 표현된다. 각 칸에는 그 위치의 높이가 적혀 있다. 다해는 처음에 (1, 1)에 있고, (R, C)로 이동해야 한다. (1, 1)에서의 초기 속도는 V이다. 한 번에 위, 아래, 왼쪽, 오른쪽으로 인접한 한 칸만 이동할 수 있다. 속도가 V라는 것은 단위 시간 동안 V칸을 이동할 수 있다는 뜻이다.
현재 칸의 높이가 A이고 다음으로 이동할 칸의 높이가 B이면, 이동을 마친 뒤 속도는 현재 속도의 2A−B배가 된다. 실제로는 이동하는 동안 속도가 계속 변하지만, 이 문제에서는 한 칸 이동을 마친 뒤에만 속도가 변한다고 생각한다. 따라서 한 칸을 이동하는 데 걸리는 시간은 이동을 시작할 때의 속도로 계산한다.
산의 높이 정보와 초기 속도가 주어질 때, (1, 1)에서 (R, C)까지 이동하는 데 필요한 최소 시간을 구하는 프로그램을 작성하시오.
첫째 줄에 세 정수 V, R, C가 주어진다. (1 ≤ V ≤ 1,000,000, 1 ≤ R ≤ 100, 1 ≤ C ≤ 100)
다음 R개의 줄에는 각 줄마다 C개의 정수가 주어지며, 이는 산의 높이 격자를 나타낸다. 각 높이는 -25 이상 25 이하의 정수이다.
첫째 줄에 이동에 필요한 최소 시간을 출력한다. 정답과의 절대 또는 상대 오차가 10−2 이하이면 정답으로 인정된다.