외계 바이러스

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

요약
0과 1로 이루어진 H×W 격자가 주어질 때, 경계에 있는 모든 칸이 1인 축에 평행한 직각이등변삼각형의 최대 크기를 구한다.
난이도

어려움10점 중 8점

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

문제

이안이는 얼마 전 다녀온 토성 여행에서 토성의 위성 이아페투스를 방문했고, 토양 샘플을 채취해 와 분석하던 중 외계 바이러스를 발견했다. 이 외계 바이러스는 평면 격자 형태의 배지에서 아주 잘 성장했다. 배지에는 세로로 HH칸, 가로로 WW칸의 격자칸이 배열되어 있으며, 각 격자칸은 동일한 크기의 정사각형이다. 특이하게도 이 바이러스는 수평과 수직 방향으로 결합할 수 있었고, 여러 바이러스가 밑변과 높이가 수평, 수직인 직각이등변삼각형 모양으로 배치되었을 때 거대한 구조를 형성했다. 그래서 이안이는 바이러스 구조를 다음과 같이 정의하였다.

  • 서로 다른 세 격자칸에 대해, 이 격자칸들의 중심이 이루는 삼각형 TT가 직각이등변삼각형이고, 이 삼각형의 빗변이 아닌 변은 배지의 세로 또는 가로 방향과 평행하다고 하자. 이때 TT의 경계가 지나는 모든 격자칸에 바이러스가 있으면, TT를 바이러스 구조라고 하고, TT의 한 변이 지나는 격자칸의 개수를 이 바이러스 구조의 크기라고 한다.

배지의 각 격자칸에 바이러스가 있는지 여부가 주어졌을 때, 모든 바이러스 구조에 대하여 크기의 최댓값을 구하여라. 단, 바이러스 구조가 존재하지 않으면 00을 출력한다.

입력

첫째 줄에 배지의 세로 크기 HH와 가로 크기 WW가 공백으로 구분되어 주어진다.

이어서 HH줄에 걸쳐 길이 WW의 0과 1로 이루어진 문자열이 주어진다. 0은 바이러스가 없는 격자칸을, 1은 바이러스가 있는 격자칸을 나타낸다. 각 1≤i≤H1\leq i\leq H와 1≤j≤W1\leq j\leq W에 대하여, 입력의 1+i1+i번째 줄의 jj번째 문자가 1이면 배지의 ii번째 행과 jj번째 열이 만나는 격자칸에 바이러스가 있고, 해당 문자가 0이면 격자칸에 바이러스가 없다.

출력

바이러스 구조의 최대 크기를 하나의 정수로 출력한다. 만약 구조가 존재하지 않는다면 00을 출력한다.

제한

  •  1≤H≤7501 \le H \le 750 
  •  1≤W≤7501 \le W \le 750 
  • 주어지는 모든 수는 정수이다.

예제3

  1. 예제 1

    입력
    5 5
    11111
    10010
    10100
    11001
    10001
    
    예상 출력
    5
    
  2. 예제 2

    입력
    5 7
    1111111
    1111010
    1101000
    0111000
    1100000
    
    예상 출력
    3
    
  3. 예제 3

    입력
    3 3
    101
    010
    101
    
    예상 출력
    0