[문제설명]
철수와 영희는 n개의 행과 m개의 열로 이루어진 그리드에서 게임을 한다. 이 그리드 안에는 서로다른 정수들이 있다. i번째 행과 j번째 열에 있는 사각형은 (i, j)라고 표현할 수 있다.
철수는 h(1 <= h <= n)과 w(1 <= w <= m)인 두 수를 말하며 시작한다. 영희는 h * w 크기의 직사각형을 그리드에서 선택한다.
형식적으로 h * w의 직사각형은 (a, b)로 시작하는 사각형이다. (1 <= a <= n-h+1) (1 <= b <= m-w+1)
영희가 선택한 직사각형은 (i, j)의 모든 사각형들을 포함한다. (a <= i <= a+h-1) (b <= j <= b+w-1)
마지막으로 철수는 영희가 선택한 직사각형내에서 가장 큰 수를 말하면 이기게 된다.
철수는 큰 숫자들을 좋아하지 않기 때문에 철수가 말한 숫자로 생기게 되는 직사각형은 가능한한 작아야 한다. 하지만 동시에 철수가 항상 이긴다는 보장이 있는 직사각형이여야 한다.
철수가 항상 이길 수 있는 가장 작은 h, w를 구하여 h * w를 출력하시오.
t = int(input())
for _ in range(t):
row, column = map(int,input().split())
arr = []
for _ in range(row):
num = list(map(int, input().split()))
arr.append(num)
maximum = arr[0][0] # 최대값 초기화
i = 0
j = 0
inum = 1
jnum = 1
# 최대값 구하는 동시에 최대값의 좌표를 구한다.
for p in arr:
for q in p:
if maximum <= q:
maximum = q
i = inum
j = jnum
jnum+=1
inum+=1
jnum=1
standardRow = (row+1)/2 # 기준 행
standardCol = (column+1)/2 # 기준 열
# h, w는 maximum이 그리드의 중앙으로부터 멀어질수록 커지게 된다.
# 따라서 그리드의 중앙을 기준으로잡아 기준과 maximum의 차이 사이의 규칙을 찾아내 h, w를 구한다.
h = abs(standardRow-i)+standardRow
w = abs(standardCol-j)+standardCol
print(int(h*w))
'코드포스 - Codeforces' 카테고리의 다른 글
Codeforces Round #804 (Div. 2) A. The Third Three Number Problem (0) | 2022.07.11 |
---|---|
Educational Codeforces Round 130 (Div. 2)) A. Parkway Walk (0) | 2022.06.13 |
Codeforces Round #784 (Div. 4) A. Division? (0) | 2022.04.29 |
코드포스 (Codeforces Round #765(Div.2)) A. Ancient Civilization (0) | 2022.01.19 |
코드포스 (Codeforces Round #764 (Div. 3)) A. Plus One on the Subset (0) | 2022.01.18 |
댓글