using
System;
class
GFG
{
static
public
int
R=2;
static
public
int
C=2;
static
int
bsearch(
int
low,
int
high,
int
n,
int
[]arr)
{
int
mid = (low + high)/2;
if
(low <= high)
{
if
(arr[mid] < n)
return
bsearch(mid +1, high, n, arr);
return
bsearch(low, mid - 1, n, arr);
}
return
low;
}
public
static
int
[] GetRow(
int
[,] matrix,
int
row)
{
var
rowLength = matrix.GetLength(1);
var
rowVector =
new
int
[rowLength];
for
(
var
i = 0; i < rowLength; i++)
rowVector[i] = matrix[row, i];
return
rowVector;
}
static
int
mindiff(
int
[,]arr,
int
n,
int
m)
{
for
(
int
i = 0; i < n; i++)
Array.Sort(GetRow(arr,i));
int
ans = +2147483647;
for
(
int
i = 0; i < n - 1; i++)
{
for
(
int
j = 0; j < m; j++)
{
int
p = bsearch(0, m-1, arr[i,j], GetRow(arr,i+1));
ans = Math.Min(ans, Math.Abs(arr[i + 1,p] - arr[i,j]));
if
(p-1 >= 0)
ans = Math.Min(ans,
Math.Abs(arr[i + 1,p - 1] - arr[i,j]));
}
}
return
ans;
}
public
static
void
Main (String[] args)
{
int
[,]m ={{8, 5},
{6, 8}};
Console.WriteLine(mindiff(m, R, C));
}
}