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