AT_abc333_e [ABC333E] Takahashi Quest

题目描述

高桥君准备踏上冒险之旅。 在冒险过程中,将会发生 $N$ 个事件。第 $i$ 个事件 $(1 \leq i \leq N)$ 由整数对 $(t_i, x_i)$ $(1 \leq t_i \leq 2, 1 \leq x_i \leq N)$ 表示,具体如下: - 当 $t_i = 1$ 时,发现了一个类型为 $x_i$ 的药水。高桥君可以选择拾取或丢弃这个药水。 - 当 $t_i = 2$ 时,遇到了一只类型为 $x_i$ 的怪物。如果高桥君持有类型为 $x_i$ 的药水,可以消耗一个药水击退怪物。若无法击退怪物,则高桥君会失败。 请判断高桥君是否能够击退所有怪物而不失败。 如果高桥君无法击退所有怪物,请输出 `-1`。 如果高桥君能够击退所有怪物,记高桥君在冒险过程中持有药水的最大数量为 $K$。在所有不会失败的策略中,$K$ 的最小值记为 $K_{\min}$。请输出 $K_{\min}$ 的值,并输出一种能够实现 $K_{\min}$ 且高桥君不会失败的行为方案。

输入格式

输入以如下格式从标准输入读入。 > $N$ > $t_1$ $x_1$ > $t_2$ $x_2$ > $\vdots$ > $t_N$ $x_N$

输出格式

如果高桥君无法击退所有怪物,输出 `-1`。 如果高桥君能够击退所有怪物,第一行输出 $K_{\min}$ 的值。第二行按顺序输出所有 $t_i = 1$ 的事件,对于第 $i$ 个事件发现的药水,若拾取则输出 `1`,否则输出 `0`,用空格分隔。 若存在多种实现 $K_{\min}$ 且不会失败的行为方案,输出任意一种均可。

说明/提示

### 限制条件 - $1 \leq N \leq 2 \times 10^5$ - $1 \leq t_i \leq 2\ (1 \leq i \leq N)$ - $1 \leq x_i \leq N\ (1 \leq i \leq N)$ - 输入均为整数 ### 样例解释 1 输出示例对应如下行为: - 依次发现类型为 $2, 3, 1$ 的药水,全部拾取。 - 依次发现类型为 $3, 2$ 的药水,全部不拾取。 - 遇到类型为 $3$ 的怪物,消耗一个类型 $3$ 的药水击退。 - 发现类型为 $3$ 的药水,拾取。 - 发现类型为 $3$ 的药水,不拾取。 - 遇到类型为 $3$ 的怪物,消耗一个类型 $3$ 的药水击退。 - 发现类型为 $3$ 的药水,拾取。 - 遇到类型为 $2$ 的怪物,消耗一个类型 $2$ 的药水击退。 - 遇到类型为 $3$ 的怪物,消耗一个类型 $3$ 的药水击退。 - 遇到类型为 $1$ 的怪物,消耗一个类型 $1$ 的药水击退。 在此方案下,$K = 3$。不存在 $K \leq 2$ 且不会失败的方案,因此 $K_{\min} = 3$。满足 $K = 3$ 且不会失败的行为方案有多种,输出任意一种均可。 ### 样例解释 2 高桥君必然会在第一次遇到怪物时失败。 由 ChatGPT 4.1 翻译