P8887 [DMOI-R1] 柯基棋

题目背景

小 A 和小 B 都是爱狗人士,且绝顶聪明,尤其喜爱柯基,于是他们发明了“柯基棋”。

题目描述

小 A 和小 B 在一个 $n \times n$ 的棋盘内轮流下棋。小 A 先手,小 B 后手。设当前有一只“柯基”被下在了棋盘的 $(x,y)$ 处,那么棋盘内的 $(x-1,y-1)$,$(x-1,y+1)$,$(x+1,y-1)$,$(x+1,y+1)$ 处都会变为这只“柯基”的地盘,也就不能再放一只“柯基”。当一个人不能再放下一只“柯基”时,他就输了。 可惜,小 C 却不怎么喜欢柯基,所以他很反对小 A 和小 B 玩“柯基”棋,于是他非常喜欢捣乱棋局。当小 A 和小 B 一共下了 $x_i$ 只“柯基”时,小 C 就会以当前 $w \times w$ 棋盘的中心为中心,扩大棋盘为 $(w+2) \times (w+2)$,他一共会捣乱 $q$ 次。 而你的任务是要判断这局棋是小 A 赢还是小 B 赢,如果小 A 赢,输出 `A won`,否则输出 `B won`。 由于他们两个人比较贪玩,所以他们一共会玩 $T$ 局。 **注意**: 1. 当小 A 和小 B 已经将原来的棋盘下到不能再下时,他们会直接跳转到小 C 下一次的捣乱(如果有)。 2. 小 A 和小 B 知道小 C 会捣乱,且会按照自己的最优策略走。 由于数据过大,$x_i$ 由数据随机生成器给出。

输入格式

输出格式

说明/提示

### 随机数据生成器 每一轮游戏的 $x_i$ 由下方的生成器给出: ```cpp unsigned long long x[10000005]; unsigned long long xor_shift(unsigned long long &seed){ return seed^=seed>>12, seed^=seed27, seed*0x2545F4914F6CDD1D; } int main(){ //your code here int n,q; unsigned long long seed; cin>>n>>q>>seed; for(int i=1;i