격자 이동 4
\(N\)행 \(M\)열의 격자가 있다. 각 칸에는 정수가 하나씩 적혀 있다. 이 중 \((R,C)\)는 이동할 수 없는 칸이다.
왼쪽 위 칸인 \((1,1)\)에서 출발하여 오른쪽 아래 칸인 \((N,M)\)까지 이동하려고 한다. 현재 칸에서 다음 두 방향 중 하나로 이동할 수 있다.
- 오른쪽: \((r,c)\)에서 \((r,c+1)\)로 이동한다.
- 아래쪽: \((r,c)\)에서 \((r+1,c)\)로 이동한다.
격자 밖이나 이동할 수 없는 칸으로는 이동할 수 없다. 경로에 포함된 모든 칸의 값을 더했을 때 얻을 수 있는 합의 최댓값을 구하여라. 시작 칸과 도착 칸의 값도 합에 포함한다.
도착 칸까지 이동할 수 없는 입력은 주어지지 않는다.
입력
첫째 줄에 격자의 행의 수 \(N\)과 열의 수 \(M\)이 공백으로 구분되어 주어진다.
다음 \(N\)개의 줄에 걸쳐 격자에 적힌 정수가 주어진다. 이 중 \(i\)번째 줄의 \(j\)번째 정수는 \((i,j)\)에 적힌 값 \(A_{i,j}\)이다.
마지막 줄에 이동할 수 없는 칸의 행 \(R\)과 열 \(C\)가 공백으로 구분되어 주어진다.
출력
가능한 경로에서 얻을 수 있는 합의 최댓값을 출력한다.
제한
- \(2 \le N,M \le 1,000\)
- \(-1,000 \le A_{i,j} \le 1,000\)
- \(1 \le R \le N\)
- \(1 \le C \le M\)
- \((R,C)\)는 \((1,1)\) 또는 \((N,M)\)이 아니다.
- 입력으로 주어지는 값은 모두 정수이다.
예제 입력
3 3
1 2 3
4 5 6
7 8 9
2 1
예제 출력
25
\((2,1)\)로는 이동할 수 없다. \((1,1)\)에서 시작하여 \((1,2)\), \((2,2)\), \((3,2)\), \((3,3)\)의 순서로 이동하면 합은 \(1+2+5+8+9=25\)이다.
코멘트