만드는 중입니다

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

종이 접기

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

요약
N행 M열의 정수 격자를 행 또는 열 경계를 따라 여러 번 접어 겹치는 칸의 값을 더할 때, 어느 칸에서든 얻을 수 있는 최댓값을 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 구간, 조합론, 시뮬레이션
정답자
아직 제출이 없습니다

문제

직사각형 종이가 있다. 종이는 (N)행 (M)열의 1×1 칸으로 나뉘어 있고, 각 칸에는 정수가 하나씩 적혀 있다.

종이는 여러 번 접을 수 있다. 한 번 접을 때마다 서로 이웃한 두 행 사이 또는 두 열 사이의 선을 골라 한쪽 부분을 다른쪽 위로 접는다. 접은 뒤 같은 위치에 겹친 칸의 값은 그 칸들에 적혀 있던 값의 합이 된다.

가능한 모든 접는 방법을 고려했을 때, 접힌 종이에 나타날 수 있는 칸의 값 중 최댓값을 구하시오.

입력

첫째 줄에 종이의 세로 크기 (N)과 가로 크기 (M)이 주어진다. (N)과 (M)은 12 이하의 자연수이다.

둘째 줄부터 (N)개의 줄에는 각 줄마다 (M)개의 정수가 주어진다. 각 정수의 절댓값은 100 이하이다.

출력

가능한 칸의 값 중 최댓값을 한 줄에 출력한다.

예제5

  1. 예제 1

    입력
    4 4
    1 -1 -1 1
    -1 -1 -1 -1
    -1 -1 -1 -1
    1 -1 -1 1
    
    예상 출력
    4
    
  2. 예제 2

    입력
    2 3
    1 1 1
    1 1 1
    
    예상 출력
    6
    
  3. 예제 3

    입력
    2 2
    1 -1
    1 -1
    
    예상 출력
    2
    
  4. 예제 4

    입력
    1 1
    0
    
    예상 출력
    0
    
  5. 예제 5

    입력
    3 4
    20 13 -2 100
    -12 0 4 -3
    4 1 -36 21
    
    예상 출력
    131