게임판

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

요약
N행 M열 격자에 1번 말과 2번 말이 놓여 있을 때, 한 변의 길이가 홀수 K인 K행 K열 정사각형을 골라 중앙에서 각 말까지의 맨해튼 거리 합의 차이의 최솟값을 구한다.
난이도

보통10점 중 7점

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

문제

NN행 MM열 크기의 격자판이 있다. 격자판의 각 칸은 비어있거나 1번 말 혹은 2번 말이 놓여있다. 편의상 XX행 YY열(1≤X≤N,1≤Y≤M1 \leq X \leq N, 1 \leq Y \leq M)의 칸을 (XX, YY)로 표시한다. 가장 왼쪽 위 칸은 (1,1)(1, 1)이고, 가장 오른쪽 아래 칸은 (N,M)(N, M)이다.

주원이와 준원이는 이 격자판에서 게임을 하려고 한다. 주원이는 11번 말을, 준원이는 22번 말을 선택했다. 게임을 진행하기 위해선 한 변의 길이가 홀수 KK인 정사각형 크기의 격자판이 필요했기 때문에, 격자판의 일부를 선택해 그 안에서만 게임을 진행하려고 한다.

게임을 공정하게 진행하기 위해서, 주원과 준원은 선택할 수 있는 KK행 KK열 크기의 격자판 중에서 유리도 차이가 가장 작은 격자판을 선택하려고 한다. 한 사람의 유리도는 선택한 격자판 안에 있는 자기 말들과 격자판의 중앙과의 거리의 합으로 계산된다. 선택한 격자판의 가장 왼쪽 위 칸이 (X,Y)(X, Y)일 때 격자판 중앙의 위치는 (X+K−12,Y+K−12)(X+\frac{K-1}{2}, Y+\frac{K-1}{2})이며, 두 칸의 위치 (X_1,Y_1)(X\_1, Y\_1)와 (X_2,Y_2)(X\_2, Y\_2) 사이의 거리는 ∣X_1−X_2∣+∣Y_1−Y_2∣|X\_1 - X\_2| + |Y\_1 - Y\_2|로 정의된다. 예를 들어, (1,3)(1, 3)과 (5,1)(5, 1) 사이의 거리는 (5−1)+(3−1)(5-1) + (3-1)인 66이다.

아래 그림과 같은 상태의 44행 55열 크기의 격자판이 주어졌고, 이 안에서 게임을 위한 33행 33열 크기의 격자판을 선택하려고 한다.

게임을 진행할 격자판의 가장 왼쪽 위 칸과 오른쪽 아래 칸을 각각 (1,1)(1, 1)과 (3,3)(3, 3)으로 했을 때, 격자판 안의 11번 말들과 중앙인 (2,2)(2, 2)와의 거리의 합은 66이고, 22번 말들과 중앙의 거리의 합은 00이므로 유리도의 차이는 66이다.

가장 왼쪽 위 칸과 오른쪽 아래 칸이 각각 (2,1)(2, 1)과 (4,3)(4, 3)인 격자판을 선택한다면 11번 말과 중앙의 거리의 합은 0+1=10+1=1이며, 22번 말의 거리의 합은 1+1=21+1 = 2로, 유리도의 차이는 11이 된다. 이 NN행 MM열의 격자판에서 선택 가능한 모든 격자판을 봐도 유리도의 차이가 11보다 작은 경우는 없기 때문에 문제의 정답은 11이 된다.

주원과 준원이 선택할 수 있는 격자판 중 유리도의 차이가 가장 작을 때의 차이를 찾아주자.

입력

첫 번째 줄에 NN, MM, KK가 공백을 사이에 두고 주어진다.

다음 NN개의 줄에는 격자판의 상태를 의미하는 길이 MM의 문자열이 주어진다. 문자열은 ., 1, 2로 이루어져 있고, 아래와 같은 의미를 가진다.

  • . : 빈 칸
  • 1 : 11번 말이 놓여있는 칸
  • 2 : 22번 말이 놓여있는 칸

출력

첫 번째 줄에 가능한 유리도의 차이 중 최솟값을 출력한다.

제한

  • 주어지는 모든 수는 정수이다.
  • 1≤N,M≤5001 \leq N, M \leq 500
  • 1≤K≤min⁡(N,M)1 \leq K \leq \min(N, M)
  • KK는 홀수이다.
  • 주어지는 격자판의 상태는 ., 1, 2로 이루어져 있다.

예제2

  1. 예제 1

    입력
    4 5 3
    .111.
    .2.2.
    .111.
    .2.2.
    
    예상 출력
    1
    
  2. 예제 2

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