격자 연결하기

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

요약
정수가 적힌 N×M 격자에서 두 격자를 골라 최단 경로로 이을 때, 경로에 포함된 격자 값의 합이 최대가 되도록 하는 값을 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 누적 합, 구현
정답자
아직 제출이 없습니다

문제

각 격자에 정수가 적힌 N×MN\times M크기의 격자판이 있다. 격자판 점수는 22개의 격자를 선택하여 최단 경로로 연결했을 때, 연결된 경로에 있는 격자들에 적힌 수의 합으로 계산한다.

최단 경로가 여러 개인 경우, 어떤 경로를 선택해도 무관하다. 연결된 경로에는 선택한 격자들도 포함된다. 같은 위치의 격자를 중복하여 선택할 수도 있는데, 이 경우 해당 격자의 수를 한 번만 더한다.

임의의 두 격자를 선택했을 때, 얻을 수 있는 격자판 점수의 최댓값을 구해보자.

입력

첫째 줄에 격자판의 세로 크기 NN과 가로 크기 MM이 공백으로 구분되어 주어진다. (1≤N,M≤1,000)\left(1\leq N,M\leq 1,000\right)

둘째 줄부터 NN줄에 걸쳐 격자의 점수 A_ijA\_{ij}가 공백으로 구분되어 주어진다. (∣A_ij∣≤1,000;(\left|A\_{ij}\right|\leq 1,000; 1≤i≤N;1\leq i\leq N; 1≤j≤M)1\leq j\leq M)

출력

두 격자를 선택했을 때, 얻을 수 있는 격자판 점수의 최댓값을 출력한다.

힌트

(r,c)\left(r, c\right)를 기준으로 (3,1)\left(3, 1\right) 위치의 격자와 (2,4)\left(2, 4\right) 위치의 격자를 선택하면 4,5,7,−3,64, 5, 7, -3, 6을 선택하여 1919점을 얻는다.

예제2

  1. 예제 1

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

    입력
    1 1
    -3
    
    예상 출력
    -3