塔子哥是一家知名企业的HR主管,为了提高员工的工作积极性,他经常会组织各种活动来丰富员工的业余生活。最近,他举办了一场员工抽奖活动,奖品分别是儿童绘本和雨伞。在活动中,每位员工都需要填写自己喜欢的奖品,并抽取一个获奖号码。活动进行得非常成功,员工们都参与热情高涨,最终产生了一批获奖者。
现在,塔子哥需要让获奖员工领取奖品。但是,他发现每个员工都有自己喜欢的奖品,只会领取自己想要的那个奖品,因此他需要根据员工填写的喜好,分别提供儿童绘本和雨伞两种奖品,分别用数字 0 和 1 表示,每个员工都有自己喜欢的奖品(儿童绘本或雨伞),且只会领取自己喜欢的奖品。。
塔子哥把奖品自下往上一件一件堆叠在一起,同时让员工站成一个队列,领取规则为:
对于人员,需要能够支持从一端出去,从另一端入。所以我们采用双端队列的形式存储人员数据。
对于物品,需要支持从一端弹出的操作,所以采用栈的形式存储。
接下来就按着题目的思路来模拟即可。
由于可能存在一直循环的可能,所以我们用cnt记录当前已经连续失配了多少次。超过n的最大值就break。