/* *State: 1704 Accepted 200K 16MS C++ 594B *题目大意: * 一个1*M的棋盘上有N个棋子,初始位置一定,两人轮流操作, * 每次移动一枚棋子,要求只能向左移且至少移动一格,而且不 * 能到达或经过以前有棋子的格子,谁无法移动棋子就算输。 *解题思路: * 先考虑两个棋子靠在一起的时候,这两对棋子就构成了一个 * 奇异局势(P点)。所以可以把题目中的棋子分解为两对两对, * 两对两对之间是不需要考虑什么的。在同一对棋子中,如果对 * 手移动前一个,你总能对后一个移动相同的步数,所以一对 * 棋子的前一个和前一对棋子的后一个之间有多少个空位置对 * 最终的结果是没有影响的。每两对构成一组,而这两对之间就 * 是一堆石子。然后就可以Nim博弈了。注意如果是奇数个棋子, * 首个棋子要跟棋盘首构成一对。 */

#include <iostream> #include <stdio.h> #include <algorithm> using namespace std; const int MAX = 10005; int main(void) { int cas; scanf("%d", &cas); while(cas--) { int ini[MAX]; int n; scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d", &ini[i]); sort(ini, ini + n); int sum = 0; for(int i = n - 1; i >= 0; i -= 2) { int tmp; if(i == 0) tmp = ini[i] - 1; else tmp = ini[i] - ini[i - 1] - 1; sum ^= tmp; } if(!sum) printf("Bob will win\n"); else printf("Georgia will win\n"); } return 0; }