注册 登录
编程论坛 C++教室

求助-黑白棋

根根本根 发布于 2018-12-19 20:54, 1708 次点击
黑白棋
输入文件: 标准输入   输出文件: 标准输出   
时间限制: 1 Sec  内存限制: 128 MB
提交: 5  解决: 1

题目描述

黑白棋是一种游戏,两个人分别拿黑棋和白棋,在一个 N * N (N 是偶数)的棋盘格子上轮流走棋,黑棋先下,棋子下在格子里而不是交叉线上。棋盘上的一个位置(x,y)表示从下往上第 x 行,从左到右第 y 列(1<=x,y<=N)。棋盘初始的时候,在正中间的四个格子分别放下两个黑子和两个白子,从下往上两行,分别是黑白和白黑。黑子先开始下棋。当一方下完一步棋以后,横向、纵向、斜向八个方向内有一个自己的棋子,则被夹在中间的全部翻转会成为自己的棋子。并且,只有在可以翻转棋子的地方才可以下子。

现在你知道了棋谱,也就是每个人每一步下在哪里,请你计算棋局结束的时候,黑方和白方各有几个棋子。

烦恼的是,棋谱被人修改过了,增加了一些手数。好在,所有增加的手数都是不合法的,所以比较容易被识别出来,直接忽略掉就好了。
输入

第一行两个整数 N、M,分别表示棋盘的大小为 N(N<=20),双方一共下了 M(M<=400)步棋。

后续 M 行,每行两个整数 X、Y(1<=X,Y<=N),表示一步棋的位置。
输出

两个整数 B、W,分别表示棋盘上黑色和白色的棋子数量。
样例输入1

8 10
4 6
3 4
3 3
5 6
3 5
4 3
6 4
3 6
4 7
3 2

样例输出1

7 7

0 回复
1