#P1181. 闻道长安似弈棋
闻道长安似弈棋
问题描述
李将军惊诧于叶书生地惊人才智与在大唐超级计算机中的权限,他想知道叶书生是怎样进入朝廷的。
叶书生说,在我任安亭节度使的时候,曾经是我们那边的围棋社长,后来隐居终南山,在终南山第一届棋王争霸赛上反向获得冠军,玄宗封我为“慈善棋王”,并且召见了我。
“那么我可要会会你。”
李将军曾经玩了一种非常好玩的战棋,是欧阳尚书介绍给他的,他想挑战一下叶书生。
名字叫做游熙罔。
初始场上是空的,双方每个人初始生命值 为 ,每个人有 个空地,即只能招唤出 个单位。双方轮流执行各自的回合。每个自己的回合可以打出任意张单位卡进行召唤(为了简化游戏,这里不涉及费用的限制),每次打出一张。每个单位有不同的攻击力 和生命值 。召唤完成后回合结束。自己的回合结束时己方单位自动对对方发起攻击,但是这一个回合刚召唤出来的单位不会发起攻击。 攻击的结算方法是,双方各自场上的单位按照召唤的顺序从早到晚进行排序,己方的第 个单位攻击对方的第 个单位,对防守方单位造成攻击单位攻击值的伤害(对方单位的 减少己方的 值),同时受到对方单位造成的伤害(己方单位的 减少对方的 值)。所有的攻击同时进行。如果有单位的 减少到 或以下,则被判定为消灭,移除游戏。如果己方单位比对方多,那么没有攻击对象的单位可以直接攻击对方玩家,对对方玩家造成 值的伤害。 减少到 或以下的玩家被判定为输。
“这明明是卡牌嘛。”
“当时上面风头紧,突然查房的时候棋子不好收拾,用卡牌多方便啊。”
李将军武艺高强,手速极快。叶书生最近在编写《高等树学》第八版,手速也极快。
他们只管下“棋”,现在让你做裁判,输入一系列双方的操作,输出裁判结果。如果遇到错误的操作,需要输出操作错误。如果游戏结束,需要输出游戏结束和胜利玩家(详细格式见输出说明),并且程序结束运行。 如果你判断正确,有希望成为下一任安亭慈善棋王哦。
输入格式
第一行一个整数 ,代表操作的数量()。
第 行到第 行,每行一个操作。
操作的模式如下:
Summon atk hp
:当前玩家召唤一个攻击力为 ,生命值为 的单位。Turn End
:当前玩家结束回合。
所有的 、 都是在 以内的正整数。
输出格式
对于第 个操作,如果操作错误(即已经有 个单位并召唤新的单位),则输出 error i
。
如果第 次操作,如果操作后游戏结束,则输出胜利玩家。如果先手胜利,输出 player 1 win
;如果后手胜利,输出 player 2 win
。输出胜利玩家之后结束程序,忽略后续的输入。
如果 次操作后都没有结束游戏,那么输出最终场上的状态。首先按照召唤顺序输出先手的单位,然后按照召唤顺序输出后手的单位,一个单位占一行。每个单位输出攻击力 和生命值 ,用空格隔开。最后一行输出先手的剩余生命值和后手的剩余生命值,用空格隔开。
样例输入
10
Summon 1 1
Turn End
Summon 1 1
Summon 30 30
Turn End
Summon 3 3
Turn End
Summon 30 30
Turn End
Turn End
样例输出
30 27
30 30
30 30
提示
为了说明 error
的输出格式,给出样例 2:
输入:
10
Summon 10 10
Summon 10 10
Summon 10 10
Summon 10 10
Summon 10 10
Summon 10 10
Summon 10 10
Summon 10 10
Turn End
Summon 1 1
输出:
error 8
10 10
10 10
10 10
10 10
10 10
10 10
10 10
1 1
30 30