题目描述
高桥将开始一次冒险。在探险过程中,会发生 N 个事件。第 i 个事件 (1≤i≤N) 由一对整数 (ti,xi) 表示。(1≤ti≤2,1≤xi≤N) 并如下所示:
- 如果 ti=1,他找到了一个 xi 类型的药水。他可以选择捡起或丢弃。
- 如果是 ti=2,他将遇到一只 xi 类型的怪物。如果他有 xi 型药水,他可以使用一种药水击败怪物。如果没有打败它,他就会被打败。
判断他是否可以打败所有怪物而不被打败。如果他不能打败所有的怪物,就打印出来。否则,让 K 成为他在冒险过程中拥有的药水的最大数量。让 Kmin 成为 K 在所有策略中不会被打败的最小值。打印 Kmin 的值以及高桥实现 Kmin 的行动。
数据范围:
- 1≤N≤2×105
- 1≤ti≤2 (1≤i≤N)
- 1≤xi≤N (1≤i≤N)
输入格式:
N
t1 x1
t2 x2
⋮
tN xN
输出格式:
如果高桥不能打败所有的怪物,打印 -1
。如果他能,则在第一行打印 Kmin 的值,在第二行,对于 i 中的每一个 ti=1,按升序打印,如果他在i事件中捡到了药水,则打印 1
,否则打印 0
,中间用空格隔开。如果多个行动序列都达到了 Kmin,并且让他在没有被打败的情况下完成了冒险,那么你可以打印其中的任何一个。