using
System;
using
System.Collections.Generic;
class
GFG {
static
bool
issafe(
int
m,
int
n,
int
i,
int
j)
{
if
(i < 0)
return
false
;
if
(j < 0)
return
false
;
if
(i >= m)
return
false
;
if
(j >= n)
return
false
;
return
true
;
}
static
int
[] endpoints(
int
[, ] arr,
int
m,
int
n)
{
int
i = 0;
int
j = 0;
int
current_i = 0;
int
current_j = 0;
char
current_d =
'r'
;
Dictionary<
char
,
char
> rcd
=
new
Dictionary<
char
,
char
>();
rcd[
'l'
] =
'u'
;
rcd[
'u'
] =
'r'
;
rcd[
'r'
] =
'd'
;
rcd[
'd'
] =
'l'
;
while
(issafe(m, n, i, j)) {
current_i = i;
current_j = j;
if
(arr[i, j] == 1) {
char
move_in = rcd[current_d];
arr[i, j] = 0;
if
(move_in ==
'u'
)
i -= 1;
else
if
(move_in ==
'd'
)
i += 1;
else
if
(move_in ==
'l'
)
j -= 1;
else
if
(move_in ==
'r'
)
j += 1;
current_d = move_in;
}
else
{
if
(current_d ==
'u'
)
i -= 1;
else
if
(current_d ==
'd'
)
i += 1;
else
if
(current_d ==
'l'
)
j -= 1;
else
if
(current_d ==
'r'
)
j += 1;
}
}
return
new
int
[] { current_i, current_j };
}
public
static
void
Main(
string
[] args)
{
int
M = 3;
int
N = 5;
int
[, ] arr = { { 0, 1, 1, 1, 0 },
{ 1, 0, 1, 0, 1 },
{ 1, 1, 1, 0, 0 } };
int
[] p = endpoints(arr, M, N);
Console.WriteLine(
"("
+ p[0] +
", "
+ p[1] +
")"
+
"\n"
);
}
}