만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

X 아우라

시간 제한1초메모리 제한2048 MB

요약
높이가 적힌 격자와 홀수 지수 X가 주어집니다. 각 이동의 비용은 (h1-h2)^X이며, 두 칸 사이의 최소 총 비용을 질의마다 구하거나 비용이 무한히 작아질 수 있으면 INVALID를 출력합니다.
난이도

어려움10점 중 9점

유형
그래프, 최단 경로, 동적 계획법
정답자
아직 제출이 없습니다

문제

ICPC 산은 RR행 (11행부터 RR행까지 번호를 매긴다)과 CC열 (11열부터 CC열까지 번호를 매긴다)의 격자로 나타낼 수 있다. 행 rr, 열 cc의 칸은 (r,c)(r, c)로 표기하며, 높이는 Hr,cH_{r,c}이다. 두 칸은 변을 공유하면 인접한다. 따라서 (r,c)(r, c)는 해당 칸이 존재한다면 (r−1,c)(r - 1, c), (r+1,c)(r + 1, c), (r,c−1)(r, c - 1), (r,c+1)(r, c + 1)과 인접한다.

인접한 칸 사이로만 이동할 수 있으며, 이동할 때마다 페널티가 붙는다. 홀수인 양의 정수 XX를 아우라로 가질 때, 높이 h1h_1인 칸에서 높이 h2h_2인 칸으로 이동하면 (h1−h2)X(h_1-h_2)^X의 페널티를 받는다. 페널티는 음수일 수 있다.

독립된 시나리오가 QQ개 있다. 각 시나리오에서는 시작 칸 (Rs,Cs)(R_s, C_s)에서 도착 칸 (Rf,Cf)(R_f, C_f)까지 총 페널티가 최소가 되도록 이동한다. 일부 시나리오에서는 총 페널티를 임의로 작게 만들 수 있다. 이런 시나리오를 잘못된(invalid) 시나리오라고 한다. 각 시나리오마다 총 페널티의 최솟값을 구하거나, 그 시나리오가 잘못되었는지 판단한다.

입력

첫 줄에 세 정수 RR, CC, XX가 주어진다 (1≤R,C≤10001 \le R, C \le 1000; 1≤X≤91 \le X \le 9; XX는 홀수).

이어지는 RR개 줄에는 길이가 CC인 문자열 HrH_r이 주어진다. 각 문자는 0부터 9까지의 숫자이다. HrH_r의 cc번째 문자가 칸 (r,c)(r, c)의 높이 Hr,cH_{r,c}이다.

다음 줄에는 정수 QQ (1≤Q≤100 0001 \le Q \le 100\,000)가 주어진다.

이어지는 QQ개 줄에는 정수 네 개 RsR_s CsC_s RfR_f CfC_f (1≤Rs,Rf≤R1 \le R_s, R_f \le R; 1≤Cs,Cf≤C1 \le C_s, C_f \le C)가 주어진다.

출력

시나리오마다 한 줄에 답을 출력한다. 잘못된 시나리오이면 INVALID를 출력한다. 그렇지 않으면 시작 칸에서 도착 칸까지의 총 페널티 최솟값을 정수로 출력한다.

예제3

  1. 예제 1

    입력
    3 4 1
    3359
    4294
    3681
    5
    1 1 3 4
    3 3 2 1
    2 2 1 4
    1 3 3 2
    1 1 1 1
    
    예상 출력
    2
    4
    -7
    -1
    0
    
  2. 예제 2

    입력
    2 4 5
    1908
    2023
    2
    1 1 2 4
    1 1 1 1
    
    예상 출력
    INVALID
    INVALID
    
  3. 예제 3

    입력
    3 3 9
    135
    357
    579
    2
    3 3 1 1
    2 2 2 2
    
    예상 출력
    2048
    0