그냥 지나가기만

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

요약
서쪽 경계에서 동쪽 경계로 동, 북동, 남동 방향으로 이동하며 통과하는 고개 수가 정확히 n인 경로 중 고도 합이 최소인 값을 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 행렬, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

Justin과 Fred는 주의 서쪽에서 동쪽으로 자동차 여행을 떠난다. 그들에게는 몇 가지 도로 여행 규칙이 있다.

  1. 아주 즐거운 시간을 보내야 한다!
  2. 여행은 주의 서쪽 경계 어딘가에서 시작해 동쪽 경계 어딘가에서 끝나야 한다.
  3. 여행의 각 이동은 정동, 북동 대각선, 남동 대각선 중 하나여야 한다.
  4. 정확히 n개의 "고개"(아래에 정의)를 지나야 한다.
  5. Fred는 높은 고도에 민감하기 때문에 여행 중 고도의 누적 합을 최소화하려고 한다.
  6. 아주 즐거운 시간을 보내야 한다!

Justin과 Fred는 동쪽으로 이동하므로, "고개"란 동쪽과 서쪽의 고도가 엄격히 더 낮고 북쪽과 남쪽의 고도가 엄격히 더 높은 모든 지점을 말한다. 그림 E.1의 고도 지도를 보자. 운전할 수 없는 지점(물이거나 주 경계를 벗어나지 않으려는 고집 때문)은 검은색으로, 고개는 회색으로 표시되어 있다. 경계나 운전할 수 없는 지점에 인접한 지점은 고개로 간주되지 않는다.

그림 E.1: 고도 지도 예시

입력

입력은 세 정수 r c n으로 시작한다. 이는 주의 지형을 나타내는 격자의 행 수와 열 수(3 ≤ r, c ≤ 500), 그리고 지나야 하는 고개의 정확한 수(0 ≤ n ≤ 10)를 나타낸다. 다음 r개 줄에는 각각 c개의 고도 값이 주어진다. 운전할 수 없는 지점은 −1로, 나머지 고도는 0과 1 000 사이의 값이다. 동쪽 경계와 서쪽 경계에는 운전할 수 있는 지점이 각각 하나 이상 있음이 보장된다.

출력

도로 여행 규칙을 만족하는 최적 경로를 따라 이동할 때 고도의 합을 출력한다. 그러한 경로가 없으면 impossible을 출력한다.

예제2

  1. 예제 1

    입력
    5 7 2
    -1 -1 2 5 4 3 1
    3 4 1 4 1 2 1
    3 4 5 5 3 4 5
    2 3 2 1 2 3 2
    -1 5 4 1 4 4 2
    
    예상 출력
    14
    
  2. 예제 2

    입력
    4 3 1
    3 4 5
    2 4 2
    1 5 4
    1 1 1
    
    예상 출력
    impossible