Editorial for Exactly Increasing Grid
Submitting an official solution before solving the problem yourself is a bannable offence.
Türkçe
Problemde verilen ızgaradaki tüm \(\mathbf{GRID_{(i, j)}}\) değerleri için, \(\mathbf{GRID_{(i, j)}}\) değeri en sol üstteki değer \(\mathbf{GRID_{(0, 0)}} \neq \mathbf{GRID_{(i, j)} - i - j}\) olduğu sürece değişmeli. Bunun için her \(\mathbf{(i, j)}\) konumu için \(\mathbf{GRID_{(0, 0)}}\) noktasının olması gereken bir değer var. Çözüm için \(\mathbf{GRID_{(0, 0)}}\)'ın olabileceği her değer için verilen ızgarada kaç adet değerin değişmediğini buluyoruz. Değişmeyenlerin sayılarının en büyüğünü gridde kaç tane eleman olduğundan çıkarırsak cevabı buluyoruz.
English
For each value \(\mathbf{GRID_{(i, j)}}\) on the given grid, \(\mathbf{GRID_{(i, j)}}\) will be changed if the value on the top left corner \(\mathbf{GRID_{(0, 0)}} \neq \mathbf{GRID_{(i, j)} - i - j}\). So there is a corresponding value \(\mathbf{GRID_{(0, 0)}}\) should have for each \(\mathbf{(i, j)}\) location on the grid. For the solution we calculate the number of cells that won't be changed for each of the value \(\mathbf{GRID_{(0, 0)}}\) can have. We find the answer by subtracting the maximum number of unchanged values for any \(\mathbf{GRID_{(0, 0)}}\) value.
N, M = map(int, input().strip().split(" "))
grid = []
for i in range(N):
grid.append(list(input().strip().split(" ")))
counts = {}
for i in range(N):
for j in range(M):
key = int(grid[i][j]) - (i+j)
counts[key] = counts.get(key, 0) + 1
print(N*M - max(counts.values()))