#ABC333E. Takahashi Quest

Takahashi Quest

题目描述

高桥将开启一场冒险。

冒险过程中会发生 NN 个事件。第 ii 个事件(1iN1≤i≤N)由一对整数 (ti,xi)(t_i,x_i)1ti2,1xiN1≤t_i≤2,1≤x_i≤N)表示,规则如下:

  • tit_i =1,他找到一瓶类型为 xix_i 的药水。他可以选择拾取这瓶药水,或丢弃它。
  • tit_i =2,他遇到一只类型为 xix_i 的怪物。如果他拥 有类型为 xix_i 的药水,可以使用一瓶来击败怪物;如果无法击败怪物,他会失败。

请判断他是否能击败所有怪物而不失败。

若无法击败所有怪物,输出 -1。

若可以,设 KK 为他在冒险过程中某一时刻拥有的药水的最大数量。

在所有能让他不失败的策略中,取 KK 的最小值 KminK_{min}。请输出 KminK_{min},以及能达成 KminK_{min} 的高桥的行动选择。

输入格式

输入通过标准输入按以下格式给出:

  • NN
  • t1t_1 x1x_1
  • t2t_2 x2x_2

  • tNt_N xNx_N

输出格式

若高桥无法击败所有怪物,输出 -1。

若可以,第一行输出 KminK_{min}

第二行输出所有满足 tit_i=1 的事件对应的行动(按事件的升序排列),拾取药水则输出 1,丢弃则输出 0,用空格分隔。

若存在多个行动序列都能达成 KminK_{min} 且让他不失败,输出任意一个即可。

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
3
1 1 1 0 0 1 0 1

该样例输出对应的行动如下:

按顺序找到类型为 2、3、1 的药水,全部拾取。

按顺序找到类型为 3、2 的药水,全部丢弃。

遇到类型为 3 的怪物,使用一瓶类型 3 的药水击败它。

找到类型为 3 的药水,拾取。

找到类型为 3 的药水,丢弃。

遇到类型为 3 的怪物,使用一瓶类型 3 的药水击败它。

找到类型为 3 的药水,拾取。

遇到类型为 2 的怪物,使用一瓶类型 2 的药水击败它。

遇到类型为 3 的怪物,使用一瓶类型 3 的药水击败它。

遇到类型为 1 的怪物,使用一瓶类型 1 的药水击败它。

在这个行动序列中,KK 的值为 3。

不存在 K2K≤2 且能避免失败的策略,因此 KminK_{min} 为 3。

存在多个满足 K=3K=3 且能让他避免失败的行动序列,输出任意一个即可。

4
2 3
1 4
2 1
1 2
-1

他必然会被遇到的第一只怪物击败。

数据规模与约定

  • 1N2×1051≤N≤2×10^5
  • 1ti21≤t_i ≤21iN1≤i≤N
  • 1xiN1≤x_i≤N1iN1≤i≤N
  • 所有输入值均为整数