#include <stdio.h>
#include <string.h>
int
max(
int
num1,
int
num2)
{
return
(num1 > num2) ? num1 : num2;
}
int
min(
int
num1,
int
num2)
{
return
(num1 > num2) ? num2 : num1;
}
int
findMinOpeartion(
int
matrix[][2],
int
n)
{
int
sumRow[n], sumCol[n];
memset
(sumRow, 0,
sizeof
(sumRow));
memset
(sumCol, 0,
sizeof
(sumCol));
for
(
int
i = 0; i < n; ++i)
for
(
int
j = 0; j < n; ++j) {
sumRow[i] += matrix[i][j];
sumCol[j] += matrix[i][j];
}
int
maxSum = 0;
for
(
int
i = 0; i < n; ++i) {
maxSum = max(maxSum, sumRow[i]);
maxSum = max(maxSum, sumCol[i]);
}
int
count = 0;
for
(
int
i = 0, j = 0; i < n && j < n;) {
int
diff
= min(maxSum - sumRow[i], maxSum - sumCol[j]);
matrix[i][j] += diff;
sumRow[i] += diff;
sumCol[j] += diff;
count += diff;
if
(sumRow[i] == maxSum)
++i;
if
(sumCol[j] == maxSum)
++j;
}
return
count;
}
void
printMatrix(
int
matrix[][2],
int
n)
{
for
(
int
i = 0; i < n; ++i) {
for
(
int
j = 0; j < n; ++j)
printf
(
"%d "
, matrix[i][j]);
printf
(
"\n"
);
}
}
int
main()
{
int
matrix[][2] = { { 1, 2 }, { 3, 4 } };
printf
(
"%d\n"
, findMinOpeartion(matrix, 2));
printMatrix(matrix, 2);
return
0;
}