P13816 [CERC 2022] The Game

题目描述

Vladimir 是邻居中最孤独的孩子,没有其他孩子愿意和他玩。他的父母为了让他开心,给他买了一款叫做 _The Game_ 的纸牌游戏。这款纸牌游戏最多可以 5 人玩,但也可以以 _单人_(即单人模式)进行。 包装盒里有 98 张 _普通_ 牌,编号为 $2, 3, \ldots, 99$。除此之外,还有 4 张特殊的 _方向_ 牌。其中两张标有数字 $1$(后面带有向上箭头),另外两张标有数字 $100$(后面带有向下箭头)。 游戏初始阶段,将普通牌洗牌后叠放在桌面上,面朝下——这就是 _抽牌堆_。四张方向牌则竖直摆放;两张标有 $1$ 的牌必须放在最上面。每张方向牌右侧要留出足够空间——普通牌将在游戏过程中依次放在这里。标有 $1$ 的牌各自开启一条 _递增行_,而标有 $100$ 的牌各自开启一条 _递减行_。在单人模式下,玩家从抽牌堆顶依次抽取前 8 张牌,作为手牌。 初始阶段结束后,游戏开始。每一回合,玩家必须从手牌中打出两张牌,规则如下: - 如果某张牌比递增行最后(最右侧)一张牌的数字大,可以放在该递增行末尾。 - 如果某张牌比递减行最后一张牌的数字小,可以放在该递减行末尾。 - 如果某张牌比递增行最后一张牌的数字小,且两者的绝对差恰好为 $10$,也可以放在该递增行末尾;或者某张牌比递减行最后一张牌的数字大,且两者的绝对差恰好为 $10$,也可以放在该递减行末尾。这种操作称为 _倒退技巧_(backwards trick)。注意,由于这个额外规则,递增行的牌不一定严格递增(递减行同理)。 每回合打出两张牌后,玩家应从抽牌堆顶依次再抽两张牌补充手牌。这样本回合结束。如果抽牌堆已空,则继续按上述方式出牌,但不再补牌。游戏在以下两种情况下结束:如果玩家手牌已空(此时玩家 _赢得了游戏_);如果玩家手牌中所有牌都无法出牌(此时玩家 _输掉了游戏_)。 **示例:** 假设玩家初始手牌(即前 8 张抽到的牌)为: 69, 17, 59, 32, 31, 77, 87, 89 他可以选择打出 89(放在第一条递减行)和 17(放在第二条递增行)。此时四条行的状态为: ``` 1 -> 17 1 -> 100 17 100

输入格式

输入仅一行,包含 98 个用空格分隔的整数,即集合 $\{2, 3, \ldots, 99\}$ 的某个排列,表示初始抽牌堆。牌的顺序从堆顶到堆底。

输出格式

输出共六行。前四行分别描述桌面上的四条行。第五行输出玩家手中剩余的牌(如有),第六行输出抽牌堆中剩余的牌(如有)。若某行对应的列表为空,则输出空行。四条行和手牌中的牌应从左到右输出,最后一行(抽牌堆剩余牌)应按输入顺序(从堆顶到堆底)输出。具体格式见样例输出。

说明/提示

由 ChatGPT 4.1 翻译