만드는 중입니다

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

침략자 진아

면접 대비

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

요약
N×M 격자의 빈 칸 두 곳에 독 주머니를 놓아, 모든 마을에서 가장 가까운 주머니까지의 맨해튼 거리의 최댓값을 최소로 만든다.
난이도

보통10점 중 6점

유형
완전 탐색, 수학, 누적 합, 이분 탐색
정답자
아직 제출이 없습니다

문제

행성은 NN행 MM열의 격자로 주어진다. 각 칸은 빈 공간(00) 또는 마을(11)이다. 빈 공간에만 독주머니를 정확히 22개 설치해야 한다.

독은 매초 상하좌우로 인접한 칸으로 퍼진다. 마을이 중독되면 그와 인접한 마을도 11초 후에 중독되므로, 독의 확산은 격자의 모든 칸을 통과하는 이동과 같다. 마을 (x,y)(x, y)가 중독되는 시각은 두 독주머니까지의 맨해튼 거리 중 작은 값과 같고, 모든 마을이 중독되는 시각은 그 값들의 최댓값과 같다. 이 최댓값을 최소로 만드는 배치를 구해야 한다.

행 번호는 00부터 N−1N-1까지, 열 번호는 00부터 M−1M-1까지이며, 가장 위의 가장 왼쪽 칸이 (0,0)(0, 0)이다. 독주머니를 설치할 수 없는 경우는 주어지지 않는다.

입력

첫째 줄에 정수 NN과 MM이 공백으로 구분되어 주어진다. (2≤N,M≤202 \le N, M \le 20)

다음 NN개의 줄에 길이가 MM인 문자열이 주어진다. 각 문자는 00 또는 11이며, 00은 빈 공간, 11은 마을을 의미한다.

출력

독주머니 22개를 최적의 빈 칸에 설치했을 때, 모든 마을이 중독되는 데 걸리는 최소 시간을 초 단위로 출력한다.

예제2

  1. 예제 1

    입력
    5 6
    110011
    000000
    000000
    011010
    000000
    
    예상 출력
    3
    
  2. 예제 2

    입력
    19 18
    001010001000011000
    000000100110010100
    000001000110110000
    001000000000000100
    000000010011000010
    100101010010000100
    010000110101100001
    000100001001101001
    101001110100100000
    001000100000010000
    010011101101000100
    100001100110010001
    010010110100000001
    001001000000100000
    000000000000101010
    101010000001101111
    011110000000000111
    000000001010100000
    001100010110000000
    
    예상 출력
    12