#563. Takahashi Quest

Takahashi Quest

题目描述

高桥将开始一次冒险。在探险过程中,会发生 N 个事件。第 i 个事件 (1iN) 由一对整数 (ti,xi) 表示。(1ti2,1xiN) 并如下所示:

  • 如果 ti=1,他找到了一个 xi 类型的药水。他可以选择捡起或丢弃。
  • 如果是 ti=2,他将遇到一只 xi 类型的怪物。如果他有 xi 型药水,他可以使用一种药水击败怪物。如果没有打败它,他就会被打败。

判断他是否可以打败所有怪物而不被打败。如果他不能打败所有的怪物,就打印出来。否则,让 K 成为他在冒险过程中拥有的药水的最大数量。让 Kmin 成为 K 在所有策略中不会被打败的最小值。打印 Kmin 的值以及高桥实现 Kmin 的行动。

数据范围:

  • 1N2×105
  • 1ti2 (1iN)
  • 1xiN (1iN)

输入格式:

N

t1 x1

t2 x2

tN xN

输出格式:

如果高桥不能打败所有的怪物,打印 -1。如果他能,则在第一行打印 Kmin 的值,在第二行,对于 i 中的每一个 ti=1,按升序打印,如果他在i事件中捡到了药水,则打印 1,否则打印 0,中间用空格隔开。如果多个行动序列都达到了 Kmin,并且让他在没有被打败的情况下完成了冒险,那么你可以打印其中的任何一个。


样例 #1

样例输入 #1

13
1 2
1 3
1 1
1 3
1 2
2 3
1 3
1 3
2 3
1 3
2 2
2 3
2 1

样例输出 #1

3
1 1 1 0 0 1 0 1

样例 #2

样例输入 #2

4
2 3
1 4
2 1
1 2

样例输出 #2

-1

样例 #3

样例输入 #3

30
1 25
1 2
1 10
1 18
2 18
1 11
2 11
1 21
1 6
2 2
2 10
1 11
1 24
1 11
1 3
1 2
1 18
2 25
1 8
1 10
1 11
2 18
2 10
1 10
2 2
1 24
1 10
2 10
1 25
2 6

样例输出 #3

4
1 1 1 1 1 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0

提示

制約

  • 1 N2×105 1\leq\ N\leq2\times10^5
  • 1 t  i2 (1 i N) 1\leq\ t\ _\ i\leq2\ (1\leq\ i\leq\ N)
  • 1 x  i N (1 i N) 1\leq\ x\ _\ i\leq\ N\ (1\leq\ i\leq\ N)
  • 入力はすべて整数

Sample Explanation 1

输出示例与以下操作相对应。

  • 按以下顺序发现 2,3,12,3,1类型的药水。 拾取所有这些药水。
  • 按此顺序发现 3,2 3,2 类型的药水。 不拾取任何这些药水。
  • 遇到 3 3 类型的怪物。 消耗 1 1 个所拥有的 3 3 类型药水并击退怪物。
  • 您发现了一种 3 3 类型的药水。 拾取此药水。
  • 您发现了一个 3 3 型药水。 不拾取此药水。
  • 遇到一个 3 3 类型的怪物。 消耗 11 个你拥有的 33 型药水并击退怪物。
  • 您发现一个 3 3 型药水。 拾取此药水
  • 遇到一个类型 2 2 的怪物。 消耗 11 个你拥有的22型药水并击退怪物。
  • 遇到一个 3 3 类型的怪物。 消耗 1 1 3 3 类型的药水来击退怪物。
  • 遇到类型 1 1 的怪物。 消耗 1 1 个类型 1 1 的药水击退怪物。在这个行动中,K K 的值是 3 3 。由于没有办法不打败怪物,因为 K 2 K\leq\ 2 ,所以我们寻求的 K  min K\ _\ {\min} 值是 3 3 。有多种行动可以满足 K=3 K=3 并且不打败高桥 但其中任何一个都可以输出

Sample Explanation 2

高桥总是被他遇到的第一个怪物打败。