직사각형을 세 부분으로 나누기

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

요약
숫자로 채워진 격자를 겹치지 않는 세 개의 직사각형으로 나누어 각 부분 합의 곱을 최대화하는 문제입니다.
난이도

보통10점 중 5점

유형
누적 합, 완전 탐색, 행렬, 구현
정답자
아직 제출이 없습니다

문제

N×MN \times M 크기의 직사각형에 총 N×MN \times M개의 숫자가 적혀 있다.

이 직사각형을 서로 겹치지 않는 작은 직사각형 3개로 나누려고 한다. 모든 칸은 정확히 하나의 작은 직사각형에 포함되어야 하며, 각 작은 직사각형은 적어도 한 칸을 포함해야 한다.

작은 직사각형의 합은 그 안에 적힌 숫자들의 합이다. 주어진 직사각형을 작은 직사각형 3개로 나눌 때, 세 합의 곱이 가질 수 있는 최댓값을 구하라.

입력

첫째 줄에 직사각형의 세로 크기 NN과 가로 크기 MM이 주어진다.

둘째 줄부터 NN개의 줄에는 직사각형의 각 행이 위에서부터 순서대로 주어진다. 각 줄에는 정확히 MM개의 숫자가 공백 없이 주어진다.

NN과 MM은 5050 이하의 자연수이다. 직사각형에는 적어도 3개의 칸이 있다. 각 칸에는 한 자리의 십진수가 적혀 있다.

출력

작은 직사각형 3개의 합을 곱했을 때 얻을 수 있는 최댓값을 출력한다.

예제3

  1. 예제 1

    입력
    1 8
    11911103
    
    예상 출력
    108
    
  2. 예제 2

    입력
    3 3
    123
    456
    789
    
    예상 출력
    3264
    
  3. 예제 3

    입력
    3 1
    7
    9
    3
    
    예상 출력
    189