#P2035. Hit or Miss

Hit or Miss

题目描述

一种非常简单的纸牌游戏叫做“Hit or Miss”(也被称为“Frustration”、“Harvest”、“Roll-Call”、“Talkative”或“Treize”),玩法如下:

  • 使用一副标准的 52 张扑克牌(共 4 组,每组包含数字 111313,花色不影响游戏),洗牌后开始按顺序数数:1,2,3,1, 2, 3, \dots,数到 1313 后重新从 11 开始。
  • 每次数数时,查看牌堆顶的牌:
    • 如果当前数的数字与牌的数字匹配,则将该牌从牌堆中移除;
    • 如果不匹配,则将该牌移到牌堆的底部。
  • 如果能移除所有牌(可能需要很长时间),则获胜。

这个游戏可以扩展为多人版本

  1. 第一个玩家从 52 张牌的牌堆开始,其他玩家初始没有牌。
  2. 当第一个玩家移除牌时,她将牌传给第二个玩家,第二个玩家开始同样的游戏,从 11 开始数数。
  3. 当第二个玩家匹配到牌时,他将牌传给第三个玩家,依此类推。
  4. 最后一个玩家匹配到牌时直接丢弃,而不是传给第一个玩家。

所有拥有牌的玩家同步执行以下 2 步循环

  1. 计数和匹配阶段
    • 每个玩家说出当前的计数值,并检查是否匹配牌堆顶的牌。
    • 如果不匹配,则将牌移到牌堆底部;
    • 如果匹配,则将该牌传给下一个玩家(如果是最后一个玩家,则直接丢弃)。
  2. 传递阶段
    • 除第一个玩家外,每个玩家将收到的牌(如果有)放到自己牌堆的底部。

重复这些步骤,直到:

  • 游戏胜利(所有牌被最后一个玩家丢弃),或
  • 进入无法获胜的状态(如无限循环)。

如果某个玩家牌堆为空,他会等待,直到收到牌后从上次中断的计数值继续(例如,玩家 3 在计数 77 时传出了最后一张牌,他会等待,直到从玩家 2 收到牌后,在下一个循环开始时从 88 继续计数)。

输入格式

  • 输入包含多组测试数据。
  • 第一行是一个正整数 nn,表示测试数据的组数。
  • 每组测试数据占一行,包含 5353 个整数:
    • 第一个整数表示玩家数量(1players101 \leq \text{players} \leq 10);
    • 接下来的 5252 个整数表示初始牌堆的顺序(牌堆顶的牌在前),数字范围为 111313

输出格式

对于每组测试数据:

  • 输出测试数据的编号(从 11 开始);
  • 如果游戏无法获胜,输出 unwinnable
  • 否则,输出每个玩家最后丢弃的牌(按玩家顺序输出,用空格分隔)。

样例输入

2
4 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13
2 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 1

样例输出

Case 1: 13 13 13 13
Case 2: unwinnable