이번 문제는 주어진 최대 높이 256까지 임의로 높이를 지정해가며 각각의 칸에 추가해야 할 블록의 수와 지워야 할 블록의 수를 변수로 저장하고, 인벤토리 값을 갱신한 후, 추가하고 지우는 연산이 가능할 경우에 해당 시간과 높이를 구하도록 하였다. 이때 시간이 최소, 높이가 최대인 것을 만족해야 하기 때문에 시간에 대한 정답 변수와 비교시 정답 변수보다 작거나 같을 경우에 높이와 정답 변수를 갱신하도록 해야 한다.
n, m, b = map(int, input().split())
grid = [list(map(int, input().split())) for _ in range(n)]
answer = 1e9
height = 0
for std in range(257):
plus, minus = 0, 0
for i in range(n):
for j in range(m):
if grid[i][j] < std:
plus += (std - grid[i][j])
else:
minus += (grid[i][j] - std)
blocks = minus + b
if blocks < plus:
continue
time = 2 * minus + plus
if answer >= time:
answer, height = time, std
print(answer, height)