using
System;
class
GFG{
static
int
countChanges(
int
[,]matrix,
int
n,
int
m)
{
int
i, j, dist = n + m - 1;
int
Max_element = 0;
for
(i = 0; i < n; i++)
{
for
(j = 0; j < m; j++)
{
Max_element = Math.Max(Max_element,
matrix[i, j]);
}
}
int
[,]freq =
new
int
[dist, Max_element + 1];
for
(i = 0; i < dist; i++)
{
for
(j = 0; j < Max_element + 1;
j++)
freq[i, j] = 0;
}
for
(i = 0; i < n; i++)
{
for
(j = 0; j < m; j++)
{
freq[i + j, matrix[i, j]]++;
}
}
int
min_changes_sum = 0;
for
(i = 0; i < dist / 2; i++)
{
int
maximum = 0;
int
total_values = 0;
for
(j = 0; j < Max_element + 1; j++)
{
maximum = Math.Max(maximum,
freq[i, j] +
freq[n + m -
2 - i, j]);
total_values += freq[i, j] +
freq[n + m -
2 - i, j];
}
min_changes_sum += total_values -
maximum;
}
return
min_changes_sum;
}
public
static
void
Main(String []args)
{
int
[,]mat = { { 7, 0, 3, 1, 8, 1, 3 },
{ 0, 4, 0, 1, 0, 4, 0 },
{ 3, 1, 8, 3, 1, 0, 7 } };
int
minChanges = countChanges(mat, 3, 7);
Console.Write(minChanges);
}
}