CF1201E1 Knightmare (easy)

题目描述

本题与下一题仅在数据范围上有所不同。 这是一个交互题。 Alice 和 Bob 在一个 $n \times m$ 的棋盘上玩游戏,其中 $n$ 和 $m$ 都是偶数。棋盘的行编号为 $1$ 到 $n$,列编号为 $1$ 到 $m$。棋盘上有两个骑士,一个白骑士初始位于 $(x_1, y_1)$,一个黑骑士初始位于 $(x_2, y_2)$。Alice 将选择一个骑士进行游戏,Bob 使用另一个骑士。 Alice 和 Bob 轮流行动,控制白骑士的一方先手。在每一回合,玩家必须按照国际象棋的规则移动自己的骑士。即,如果骑士当前在 $(x, y)$,则可以移动到以下任意位置(前提是仍在棋盘内): $(x+1, y+2)$,$(x+1, y-2)$,$(x-1, y+2)$,$(x-1, y-2)$,$(x+2, y+1)$,$(x+2, y-1)$,$(x-2, y+1)$,$(x-2, y-1)$。 众所周知,骑士在棋盘中央最强大。两个骑士各自有一个目标位置: - 白骑士的拥有者获胜的条件是:吃掉黑骑士,或者白骑士到达 $(n/2, m/2)$,且此时该位置不在黑骑士的攻击范围内; - 黑骑士的拥有者获胜的条件是:吃掉白骑士,或者黑骑士到达 $(n/2+1, m/2)$,且此时该位置不在白骑士的攻击范围内。 形式化地说,吃掉对方骑士的一方获胜。到达自己的目标格子且该位置不在对方骑士攻击范围内的一方也获胜。 如果某个位置可以被骑士一步到达,则称该位置处于该骑士的攻击范围内。吃掉对方骑士指的是将自己的骑士移动到对方骑士所在的格子。 如果 Alice 已经走了 $350$ 步且无人获胜,则判为平局。 Alice 对自己的棋艺没有信心,于是请求你帮她选择一个骑士并帮助她获胜。你需要选择一个骑士并为她赢得比赛。可以证明,Alice 总有必胜策略。

输入格式

交互开始时,首先输入两个整数 $n$ 和 $m$($6 \le n, m \le 40$,$n$ 和 $m$ 均为偶数),表示棋盘的大小。 第二行输入四个整数 $x_1, y_1, x_2, y_2$($1 \le x_1, x_2 \le n$,$1 \le y_1, y_2 \le m$),表示白骑士和黑骑士的初始位置。保证两个骑士的起始位置不同,并且初始时没有骑士在自己的目标格子上(但可能在对方的目标格子上)。 你的程序应首先输出 "WHITE" 或 "BLACK",表示你选择哪个骑士。如果你选择白骑士,则你先手。 每当轮到你行动时,你需要输出两个整数 $x$ 和 $y$,表示你要将骑士移动到的位置。如果你在本回合获胜,程序应立即终止。 每当对手行动后,你会收到两个整数 $x$ 和 $y$,表示 Bob 移动骑士后的位置。 如果你上一次移动不合法,或在裁判行动后你已经输掉比赛,或你已经走了 $350$ 步但未获胜,你将收到 "-1 -1"。此时应立即终止程序,否则会被判为 Wrong Answer。 每次输出后不要忘记换行并刷新输出缓冲区,否则会被判为 Idleness limit exceeded。具体操作如下: - C++:fflush(stdout) 或 cout.flush() - Java:System.out.flush() - Pascal:flush(output) - Python:stdout.flush() - 其它语言请查阅相关文档。 本题不支持 Hack。 裁判程序是自适应的:裁判的走法可能会根据你的程序的走法而变化。

输出格式

(见输入格式说明)

说明/提示

在第一个样例中,白骑士可以一步到达目标格子。 在第二个样例中,无论白骑士如何移动,黑骑士都能获胜。 由 ChatGPT 4.1 翻译