using
System;
using
System.Collections.Generic;
using
System.Linq;
class
GFG {
private
static
int
dis(
int
[] ans,
int
[] attacker)
{
return
Math.Abs(ans[0] - attacker[0])
+ Math.Abs(ans[1] - attacker[1]);
}
private
static
List<List<
int
> >
findQueens(
int
[][] queens,
int
[] king)
{
List<List<
int
> > sol =
new
List<List<
int
> >();
int
[][] attackers =
new
int
[8][];
for
(
int
i = 0; i < 8; i++) {
attackers[i] =
new
int
[] { -1, -1 };
}
for
(
int
i = 0; i < queens.Length; i++) {
if
(king[0] == queens[i][0]
&& king[1] > queens[i][1]) {
if
((attackers[3][0] == -1)
|| (dis(attackers[3], king)
> dis(queens[i], king)))
attackers[3] = queens[i];
}
if
(king[0] == queens[i][0]
&& king[1] < queens[i][1]) {
if
((attackers[4][0] == -1)
|| (dis(attackers[4], king)
> dis(queens[i], king)))
attackers[4] = queens[i];
}
if
(king[0] - queens[i][0]
== king[1] - queens[i][1]
&& king[0] > queens[i][0]) {
if
((attackers[0][0] == -1)
|| (dis(attackers[0], king)
> dis(queens[i], king)))
attackers[0] = queens[i];
}
if
(king[0] - queens[i][0]
== king[1] - queens[i][1]
&& king[0] < queens[i][0]) {
if
((attackers[7][0] == -1)
|| (dis(attackers[7], king)
> dis(queens[i], king)))
attackers[7] = queens[i];
}
if
(king[1] - queens[i][1] == 0
&& king[0] > queens[i][0]) {
if
((attackers[1][0] == -1)
|| (dis(attackers[1], king)
> dis(queens[i], king)))
attackers[1] = queens[i];
}
if
(king[1] - queens[i][1] == 0
&& king[0] < queens[i][0]) {
if
((attackers[6][0] == -1)
|| (dis(attackers[6], king)
> dis(queens[i], king)))
attackers[6] = queens[i];
}
if
(king[0] - queens[i][0]
== -(king[1] - queens[i][1])
&& king[0] > queens[i][0]) {
if
((attackers[2][0] == -1)
|| (dis(attackers[2], king)
> dis(queens[i], king)))
attackers[2] = queens[i];
}
if
(king[0] - queens[i][0]
== -(king[1] - queens[i][1])
&& king[0] < queens[i][0]) {
if
((attackers[5][0] == -1)
|| (dis(attackers[5], king)
> dis(queens[i], king)))
attackers[5] = queens[i];
}
}
for
(
int
i = 0; i < 8; i++) {
if
(attackers[i][0] != -1) {
List<
int
> temp =
new
List<
int
>();
temp.Add(attackers[i][0]);
temp.Add(attackers[i][1]);
sol.Add(temp);
}
}
return
sol;
}
public
static
void
Main()
{
int
[][] queens =
new
int
[6][];
queens[0] =
new
int
[] { 0, 1 };
queens[1] =
new
int
[] { 1, 0 };
queens[2] =
new
int
[] { 4, 0 };
queens[3] =
new
int
[] { 0, 4 };
queens[4] =
new
int
[] { 3, 3 };
queens[5] =
new
int
[] { 2, 4 };
int
[] king =
new
int
[] { 2, 3 };
List<List<
int
> > res = findQueens(queens, king);
foreach
(List<
int
> l
in
res)
{
Console.WriteLine(
"("
+ l[0] +
", "
+ l[1]
+
")"
);
}
}
}