이워크를 지켜라!

면접 대비

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

요약
막힌 칸이 있는 m x n 격자에서 겹치지 않는 최대 세 개의 직사각형을 골라 덮는 넓이의 합을 최대로 만든다.
난이도

어려움10점 중 8점

유형
동적 계획법, 누적 합, 완전 탐색
정답자
아직 제출이 없습니다

문제

은하 제국이 숲의 위성 엔도어(Endor) 에 새 기지를 건설하려 합니다. 엔도어에는 이워크(Ewok) 라 불리는 작고 귀여운 생명체들이 살고 있으며, 기존의 이워크 집은 하나도 훼손해서는 안 됩니다. 이 제약을 지키면서 기지의 전체 넓이를 최대한 크게 만들어야 하고, 이 넓이는 최대 3개 의 직사각형 건물로 나누어 배치할 수 있습니다.

엔도어의 지도가 m×nm \times n 격자로 주어집니다. 각 칸은 빈 칸이거나 이워크 집입니다. 서로 겹치지 않고 이워크 집이 있는 칸을 덮지 않도록, 축에 평행한 직사각형 건물을 최대 3개(그보다 적어도 됩니다) 배치하여 건물들이 덮는 칸의 총 넓이를 최대로 만드세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다.

각 테스트 케이스의 첫 줄에는 격자의 행과 열의 수를 나타내는 두 정수 mm, nn (1≤m≤2501 \le m \le 250, 1≤n≤2501 \le n \le 250)이 주어집니다. 이어지는 mm개의 줄에 지도가 주어지며, 각 줄은 정확히 nn개의 문자로 이루어집니다. .(마침표)는 빈 칸을, e(소문자 e)는 이워크 집을 나타냅니다.

입력의 마지막 줄에는 0 0이 주어지며, 이 줄은 처리하지 않습니다.

출력

각 테스트 케이스마다 한 줄에 정수 하나를 출력합니다. 이 값은 이워크 집을 피해 서로 겹치지 않게 놓은 최대 3개의 직사각형 건물이 덮을 수 있는 칸의 최대 총 넓이입니다.

예제6

  1. 예제 1

    입력
    1 2
    ..
    5 6
    eee...
    ee...e
    ee...e
    e...ee
    e..eee
    8 12
    eee...eee...
    eee...eee...
    ee...eee..ee
    eee...eee...
    ee...eee...e
    eee..eee..ee
    ee..eee..eee
    eee..eee...e
    0 0
    
    예상 출력
    2
    13
    22
    
  2. 예제 2

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

    입력
    1 1
    e
    0 0
    
    예상 출력
    0
    
  4. 예제 4

    입력
    4 5
    .....
    .....
    .....
    .....
    
    예상 출력
    20
    
  5. 예제 5

    입력
    1 8
    .e..e...
    0 0
    
    예상 출력
    6
    
  6. 예제 6

    입력
    7 7
    ......e
    ......e
    ..e....
    ....e..
    e...e..
    ...e...
    ....e..
    
    예상 출력
    30