Description
多子连棋是五子棋的一种扩展:原来是黑白双方轮流各下1个棋子,5子连珠为赢;现在是黑白双方轮流各下L个棋子,K子连珠为赢。
为了让棋盘上的黑白棋子数目的差距尽可能小,我们约定一开始由黑方在棋盘里下⌈L/2⌉个棋子,其中⌈L/2⌉表示L/2取上整;
然后由白方在棋盘里下L个棋子;
然后由黑方在棋盘里下L个棋子;
然后由白方在棋盘里下L个棋子;
然后由黑方在棋盘里下L个棋子;
然后由白方在棋盘里下L个棋子; ……
如此交替。
双方争夺的目标是尽快形成k子连珠:如果棋盘上有连续的k个同色棋子位于同一行、同一列或同一斜线,我们就称这个颜色的棋子“形成了k子连珠”。
你的任务是编写一个程序,模拟双方的行棋,然后输出下列对弈结果:
最大的k是多少?
谁先形成了1子连珠?
谁先形成了2子连珠?
谁先形成了3子连珠?
谁先形成了4子连珠?
谁先形成了5子连珠?
……
谁先形成了k子连珠?
Input (From File: gobang.in)
第1行有3个整数N、M、L,表示棋盘的大小是N行N列,双方一共下了M个棋子,行棋规则是黑白双方轮流各下L个棋子。
接下来M行每行2个整数x、y,表示第1个棋子、第2个棋子、……、第M个棋子分别下在了棋盘上的第x行第y列。
请根据题目描述自行判断每颗棋子的颜色。
输入保证任何棋子都不会超出棋盘边界,也不会有任何2颗棋子下在同一个位置。
Output (To File: gobang.out)
第1行输出K,表示M个棋子下完后,双方最多形成了K子连珠,没有任何一方形成了(K+1)子连珠。
第2行输出K个字母,表示谁先形成了1子连珠、2子连珠、……、K子连珠:
如果黑方先形成了1子连珠,则第1个字母为“B”,否则第1个字母为“W”;
如果黑方先形成了2子连珠,则第2个字母为“B”,否则第2个字母为“W”;
如果黑方先形成了3子连珠,则第3个字母为“B”,否则第3个字母为“W”;
……
如果黑方先形成了K子连珠,则第K个字母为“B”,否则第K个字母为“W”;
Sample Input 1
3 9 1 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 Sample Output 1
3 BWB