1477 可恶的小米
时间限制 : 6000/3000 MS(Java/Others) | 内存限制 : 65536/32768 KB(Java/Others)
提交数 : 139 | 通过数 : 14
题目描述
如果你在用小米手机,那么肯定知道小米手机的抢购热潮。而小米代码门就是告诉你,你抢购成功与否的决定因素不是你在页面无限刷新的次数,而是你的账号在抢购之前有没有被后台系统选为幸运儿。选为幸运儿的账号可以直接进入购买页面,而没有被选为幸运儿的人将永远在等待页面。具体请点击下面链接http://bbs.xiaomi.cn/thread-8349097-1-1.html
当然,今天的问题就是小米如何选择成为幸运儿的账号的问题。小米账号太多啦,据说有10^9个!!!选择幸运的账号要保证大家的概率尽量相同,又要老用户更容易买到。这是一个难题啊!!
为了简单化问题,假定账号user被定义为1到10^9,user越小代表越早注册,是越老的用户,起始每个用户的lucky为0。后台系统会有幸运池,可以改变用户幸运度,也可以从幸运池选出幸运儿。后台系统会进行以下三个操作操作1:格式为 1 user lucky。代表将user的lucky值定义为lucky(可能多次改变用户lucky);操作2:格式为 2 。代表将幸运池中lucky最小的user的lucky清零(保证不会有相等lucky值),然后打印;操作3:格式为 3 。代表将幸运池中user序号最小的user选为幸运儿,该user的lucky清零,然后打印。PS:lucky>0的用户自动进入幸运池,lucky=0的用户自动退出幸运池。
输入要求
先输入组数T(T<=10)。
第一行一个数m(1<=n<=10,000)代表操作的次数。接下来m行,每行代表一个操作,每行第一个数字op,若op=1,那么后面有user和lucky(1<=user,lucky<=10^9),若op=2或op=3,操作幸运池,然后打印。
输出要求
对应每个操作2,3,输出被选择用户的user和lucky,用空格隔开,如果当前操作时幸运池没有用户,输出0 0。
输入样例
1 9 1 6 10 1 7 20 1 3 30 2 3 1 6 60 2 3 3
输出样例
6 10 3 30 7 20 6 60 0 0
提示
来源
NBU OJ