#arc0123. [arc012_3]五目並べチェッカー

[arc012_3]五目並べチェッカー

问题文

高桥君喜欢五子棋游戏。
五子棋是一种在 1919 × 1919 的围棋棋盘上交替放置棋子的游戏,当有 55 个或更多的棋子在纵、横或对角线上连成一线时,放置棋子的玩家获胜,游戏结束。
游戏必须由黑方先行。
高桥君和他的朋友青木君正在下五子棋,但高桥君不小心睡着了。
高桥君怀疑青木君在他睡觉的时候做了些不正当的行为,所以他想检查棋盘上是否有异常的地方。
请构建一个判断五子棋状态是否正常的程序。
这里的异常状态包括:

  • 某一方的获胜条件被满足,但另一方继续放置棋子。
  • 双方所放置的棋子数目不可能出现的状态。

输入

从标准输入读取的输入遵循以下格式。b1,1b2,1‥‥b19,1b_{1,1} b_{2,1} ‥‥ b_{19,1}
b1,2b2,2‥‥b19,2b_{1,2} b_{2,2} ‥‥ b_{19,2}
::
::
b1,19b2,19‥‥b19,19b_{1,19} b_{2,19} ‥‥ b_{19,19}

  • 输入有 1919 行。

  • i(1i19)i(1≦i≦19) 行的第 j(1j19)j(1≦j≦19) 个字符表示棋盘上第 ii 行第 jj 列的格子,用字符 bi,jb_{i,j} 表示。

  • bi,jb_{i,j} 是三种可能的字符之一:ox.

    • o 表示黑子。
    • x 表示白子。
    • . 表示空白。

输出

如果棋盘状态正常,则输出 YES,否则输出 NO
输出结果应该通过标准输出打印,并以换行符结尾。


输入例子 1


...................
...................
...................
...................
....x......o.......
...................
...................
.......o....o......
...................
........x..........
..............o....
...................
.......x...........
...................
...................
...................
...................
...................

输出例子 1


YES
  • 黑方下了 44 步,白方下了 33 步。
  • (描述有误,已进行修正。)

输入例子 2


...................
...................
...................
...................
....x......o.......
...................
...................
.......o....o......
...................
........x..........
..............o....
...................
.......x...........
...................
...................
.........o.........
...................
...................
...................

输出例子 2


NO
  • 黑方下了 55 步,白方下了 33 步。
  • 黑方多下了 11 步,所以这是一个异常状态。

输入例子 3


...................
...................
...................
...................
...................
...................
...................
...................
........ooooo......
.........xxxx......
........x..........
...................
...................
...................
...................
...................
...................
...................
...................

输出例子 3


NO
  • 黑方下了 55 步,白方下了 55 步。
  • 如果有一方满足胜利条件,游戏应该结束,所以黑方满足胜利条件是异常状态。
  • (描述有误,已进行修正。)

输入例子 4


...................
...................
...................
...................
...................
...................
...................
...................
........ooooo......
.........xxxx......
...................
...................
...................
...................
...................
...................
...................
...................
...................

输出例子 4


YES
  • 黑方下了 55 步,白方下了 44 步。
  • 黑方连成了 55 子并胜利,状态正常。

输入例子 5


...................
...................
...................
...................
...................
...................
...................
...................
.........x.........
......oooooo.......
........xxxx.......
...................
...................
...................
...................
...................
...................
...................
...................

输出例子 5


YES
  • 66 个连续的黑子,状态正常。
  • 例如,如果有 22 个连续的黑子,并且中间隔了 11 个空格,再有 33 个连续的黑子,如果在空格上放置了黑子,就会形成这种情况。

输入例子 6


...................
...................
...................
...................
...................
...................
........x..........
........x....x.....
...........x.......
...oooooooooo......
...................
......x......x.....
....x......x.......
.........x.........
...................
...................
...................
...................
...................

输出例子 6


NO
  • 黑方下了 1010 步,白方下了 99 步。
  • 在黑方连成 1010 子之前,黑方就已经获胜并结束了游戏,所以这是一个异常状态。

输入例子 7


...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................

输出例子 7


YES
  • 如果黑方是高桥君,并且他在没有下一步之前睡着了,这也是一个正常状态。