欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF546C.Soldier and Cards
Soldier and Cards
题目描述
两个感到无聊的士兵正在玩纸牌“战争”。他们的牌堆一共有 张牌,编号从 到 ,每张牌的数值都不同。他们以某种方式将这些牌分配给自己,每个人拥有的牌数可能不同。然后他们玩一种类似“战争”的纸牌游戏。
规则如下:每一轮都会进行一场对决。双方各自从自己牌堆的顶端取一张牌同时放到桌子上。牌面数值较大的一方赢得本轮对决,并将桌面上的两张牌都拿到自己牌堆的底部。具体地说,胜者先把对手的牌放到自己牌堆的底部,然后再把自己的牌放到牌堆底部。如果某一回合后,某位玩家的牌堆为空,则该玩家输掉游戏,另一位玩家获胜。
你需要计算共进行了多少次对决以及谁最终获胜,或者说明游戏永远不会结束。
输入格式
第一行包含一个整数 (),表示牌的总数。
第二行包含一个整数 (),表示第一个士兵拥有的牌数。紧接着是 个整数,表示第一个士兵的牌堆,从顶到底的顺序。
第三行包含一个整数 (),表示第二个士兵拥有的牌数。紧接着是 个整数,表示第二个士兵的牌堆,从顶到底的顺序。
所有的牌面数值互不相同。
输出格式
如果某人赢得了这场游戏,输出两个整数,第一个表示在游戏结束前进行了多少轮对决,第二个为 或 ,表示获胜的是哪一位士兵。
如果游戏无法结束,将永远继续下去,则输出 。
说明/提示
第一个样例:

第二个样例:

由 ChatGPT 5 翻译
样例
4
2 1 3
2 4 2
6 2
3
1 2
2 1 3
-1
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |