#P1591. M*A*S*H
M*A*S*H
描述
下士克林格是朝鲜战争中第4077流动陆军外科医院的一名成员;他会想尽一切办法离开这里。美国陆军提供了一个抽签机会,将选出一定数量()的幸运儿返回美国本土进行征兵宣传之旅。克林格需要你帮助他离开这里。
抽签的方式是让部队的所有成员立正站成一排,从1到报数并淘汰成员,其中是从一副牌的顶部抽牌所确定的数字。每当数到时,那个人就离开队伍,然后从队伍中的下一个人开始重新从1报数。当数到队伍末尾(无论此时数到的数字是多少),就从牌堆顶部抽取下一张牌,然后从剩下队伍中的第一个人开始再次从1报数。最后留在队伍中的个人可以回家。
克林格找到了一种方法,能在抽签过程开始前用一副做了手脚的牌替换掉真正的牌。然而,直到最后一刻他才会知道有多少人参加抽签。你的任务是编写一个程序,利用克林格提供的牌以及在抽签过程开始前他数出的队伍中的人数,告诉他应该站在队伍中的哪个(些)位置,以确保自己能回家。可以确定的是,在使用第20张牌之前,克林格的牌就能完成筛选工作。
一个简单的例子,假设有10个人,有2个幸运名额,牌上的数字依次为3、5、4、3、2,这表明克林格应该站在第1个或第8个位置才能回家。
输入
对于每次抽签,你会得到一行包含22个整数的内容。第一个整数()表示参加抽签的人数。第二个整数()表示将选出的幸运“回家”名额的数量。接下来的20个整数是牌堆中前20张牌的值。牌的值被解释为1到11(包含1和11)之间的整数值。
输出
对于每一行输入,你要单独在一行上打印消息“Selection #A”,其中是抽签的序号,从输入文件顶部开始,第一个抽签的序号为1。下一行将包含克林格应该尝试站进去的“幸运”位置列表。“幸运”位置列表之后跟着一个空行。
输入数据1
10 2 3 5 4 3 2 9 6 10 10 6 2 6 7 3 4 7 4 5 3 2
47 6 11 2 7 3 4 8 5 10 7 8 3 7 4 2 3 9 10 2 5 3
输出数据1
Selection #1
1 8
Selection #2
1 3 16 23 31 47
来源 美国中南部 1995年