회전 칼날 (큰 입력)

시간 제한5초메모리 제한512 MB

요약
네 모서리 칸을 제거한 K×K 정사각형 중 셀 질량의 무게중심이 정사각형 중심과 일치하는 가장 큰 K를 구합니다.
난이도

보통10점 중 6점

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

문제

비밀 기지에 놓을 함정으로 회전 칼날을 만들기로 했다. 칼날은 무거운 금속판을 잘라서 만든다. 금속판에는 정사각형 칸이 RR행 CC열로 놓인 격자가 그려져 있다. 먼저 격자에 맞춰 K×KK \times K 칸짜리 정사각형을 잘라 낸다(K≥3K \ge 3). 그다음 그 정사각형의 네 모서리에 있는 1×11 \times 1 칸을 잘라 버린다. 남은 모양이 칼날이다.

칸 하나의 질량이 DD일 것으로 예상했지만 판의 두께가 고르지 않아서, ii행 jj열 칸의 질량은 D+wijD + w_{ij}다. 축은 K×KK \times K 정사각형의 중심을 정확히 지나므로, 칼날의 질량 중심이 그 중심과 정확히 일치해야만 칼날이 제대로 돈다.

격자와 각 칸의 질량이 주어질 때, 질량 중심이 정사각형의 중심과 정확히 일치하는 칼날을 만들 수 있는 가장 큰 KK를 구하라.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스의 첫 줄에는 정수 RR, CC, DD가 주어진다. 차례로 격자의 행 개수, 열 개수, 칸 하나에 예상한 질량이다. 다음 RR개 줄에는 각각 숫자 CC개가 공백 없이 주어진다. ii번째 줄의 jj번째 숫자가 wijw_{ij}이고, 그 칸의 실제 질량과 예상 질량의 차이다. 각 칸의 밀도는 균일하며 질량은 DD 이상 D+9D + 9 이하의 정수다.

제한

  • 1≤T≤201 \le T \le 20
  • 3≤R≤5003 \le R \le 500
  • 3≤C≤5003 \le C \le 500
  • 1≤D≤1061 \le D \le 10^6
  • 0≤wij≤90 \le w_{ij} \le 9
  • 입력의 크기는 625KB를 넘지 않는다.

출력

각 테스트 케이스마다 Case #x: K 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, KK는 잘라 낼 수 있는 칼날의 최대 크기다. 크기가 3 이상이면서 질량 중심이 정사각형의 중심에 놓이는 칼날이 하나도 없으면 KK 자리에 IMPOSSIBLE을 출력한다.

힌트

평면 물체의 질량 중심은 다음 성질을 만족하는 점 cc다. 물체의 모든 점 pp에 대해 (p−c) mass(p)(p - c)\,\mathrm{mass}(p)를 더하면 영벡터가 된다. 여기서 pp와 cc, 영벡터는 모두 2차원 벡터다. 격자의 각 칸을 질량이 전부 칸 중심에 모여 있는 점 하나로 봐도 이 정의가 그대로 성립한다.

예를 들어 D=7D = 7이고 숫자 줄이 위에서부터 123, 234, 345인 3×33 \times 3 금속판을 보자. 만들 수 있는 칼날은 정사각형 전체에서 네 모서리 칸을 잘라 낸 모양 하나뿐이다. 금속판의 왼쪽 아래 꼭짓점을 원점으로 두고 xx는 오른쪽, yy는 위쪽으로 커진다고 하면 각 칸의 중심 좌표는 반정수가 된다. 남은 다섯 칸의 질량은 9, 9, 10, 11, 11이고 질량 중심은 (1.54,1.46)(1.54, 1.46)이다.

(−1.04,0.04)×9+(−0.04,1.04)×9+(−0.04,0.04)×10+(−0.04,−0.96)×11+(0.96,0.04)×11=(0,0)(-1.04, 0.04) \times 9 + (-0.04, 1.04) \times 9 + (-0.04, 0.04) \times 10 + (-0.04, -0.96) \times 11 + (0.96, 0.04) \times 11 = (0, 0)

정사각형의 중심은 (1.5,1.5)(1.5, 1.5)이므로 이 칼날은 균형이 맞지 않는다.

예제1

  1. 예제 1

    입력
    2
    6 7 2
    1111111
    1122271
    1211521
    1329131
    1242121
    1122211
    3 3 7
    123
    234
    345
    
    예상 출력
    Case #1: 5
    Case #2: IMPOSSIBLE