만드는 중입니다

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

게임판

면접 대비

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

요약
N by M 격자에서 홀수 크기 K by K 부분 격자를 골라, 중심에서 각 플레이어 말까지 맨해튼 거리 합의 차이가 가장 작은 값을 구합니다.
난이도

보통10점 중 5점

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

문제

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)이다.

주원이와 준원이는 이 격자판에서 게임을 하려고 한다. 주원이는 1번 말을, 준원이는 2번 말을 선택했다. 게임을 진행하려면 한 변의 길이가 홀수 KK인 정사각형 격자판이 필요하므로, 격자판의 일부를 골라 그 안에서만 게임을 진행하려고 한다.

게임을 공정하게 진행하기 위해 주원과 준원은 선택할 수 있는 KK행 KK열 격자판 중에서 유리도 차이가 가장 작은 격자판을 고르려고 한다. 한 사람의 유리도는 선택한 격자판 안에 있는 자기 말들과 격자판 중앙 사이 거리의 합으로 계산한다. 선택한 격자판의 가장 왼쪽 위 칸이 (X,Y)(X, Y)일 때 격자판 중앙의 위치는 (X+K−12,Y+K−12)(X+\frac{K-1}{2}, Y+\frac{K-1}{2})이며, 두 칸 (X1,Y1)(X_1, Y_1)와 (X2,Y2)(X_2, Y_2) 사이의 거리는 ∣X1−X2∣+∣Y1−Y2∣|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)으로 하면, 중앙인 (2,2)(2, 2)에서 1번 말들까지 거리의 합은 66이고 2번 말들까지 거리의 합은 00이므로 유리도 차이는 66이다.

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

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

입력

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

다음 NN개의 줄에는 격자판의 상태를 나타내는 길이 MM의 문자열이 주어진다. 문자열은 ., 1, 2로 이루어져 있으며, 의미는 다음과 같다.

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

출력

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

제한

  • 주어지는 모든 수는 정수이다.
  • 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