#P09004. 约瑟夫问题

约瑟夫问题

题目背景

据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,3939 个犹太人与Josephus及他的朋友躲到一个山洞中,3939 个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,4141 个人排成一个圆圈,由第 11 个人开始报数,每报数到第 33 人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。Josephus要他的朋友先假装遵从,他将朋友与自己安排在第 1616 个和第 3131 个位置,于是逃过了这场死亡游戏。

题目描述

将问题简化并变形,nn 个人围成一个圆圈,每个人的编号依次是 123n1、2、3、……、n。从第一个人开始数数,数到 mm 的人分以下情况处理:

  1. 如果数到 mm 的人和上次出圈的人性别不同,则本次数到 mm 的人出圈,然后由出圈的下一个人重新数数(第 11 轮因为没有上次出圈的人,数到 mm 的人直接出圈);
  2. 如果数到 mm 的人和上次出圈的人性别相同 且 圈里没有其他与他(她)们是不同性别的人,则本次数到 mm 的人出圈,然后由出圈的下一个人重新数数;
  3. 如果数到 mm 的人和上次出圈的人性别相同 且 圈里有其他与他(她)们是不同性别的人,则从本次数到 mm 的人开始循环查找,第一个与他(她)不是同一个性别的人出圈,然后由出圈的下一个人重新数数;

按照上述过程重复执行,直到所有人都出圈。

输入 nnmm 以及 nn 个人的姓名和性别,依次输出出圈人的信息。

需要特别注意的是,mm 可能远大于 nn

输入格式

11 行是两个正整数 n,mn,m

紧接着有 nn 行,依次是编号从 11 开始的 nn 个人的姓名和性别,姓名和性别都是不包含空格且长度不超过 1010 的字符串,性别只会是 MaleFemal 中的一种,两者之间用一个空格隔开。

输出格式

nn 行,每行依次是出圈人的编号、姓名和性别,用一个空格隔开每项数据。

输入输出样例

5 2
Jerry Male
Jack Male
Lucy Femal
Tim Male
Sara Femal
2 Jack Male
5 Sara Femal
4 Tim Male
3 Lucy Femal
1 Jerry Male
7 3
Jerry Male
Jack Male
Lucy Femal
Tim Male
Sara Femal
Tom Male
Hellon Male
3 Lucy Femal
6 Tom Male
5 Sara Femal
2 Jack Male
1 Jerry Male
4 Tim Male
7 Hellon Male

说明/提示

👀️ 对于100%100\%的数据,1n10001m1081 \leq n \leq 1000,1 \leq m \leq 10^8