AT_arc190_a [ARC190A] Inside or Outside

题目描述

有一个整数序列 $x = (x_1, \ldots, x_N)$,初始时 $x_1 = \cdots = x_N = 0$。 你需要对这个整数序列进行 $M$ 次操作。第 $i$ 次操作会给出一组整数 $(L_i, R_i)$,满足 $1 \leq L_i \leq R_i \leq N$,你需要从以下 $3$ 种操作中**恰好**选择一种进行: - 操作 $0$:什么都不做。该操作的代价为 $0$。 - 操作 $1$:对于所有满足 $1 \leq j \leq N$ 的整数 $j$,如果 $L_i \leq j \leq R_i$,则令 $x_j = 1$。该操作的代价为 $1$。 - 操作 $2$:对于所有满足 $1 \leq j \leq N$ 的整数 $j$,如果 $L_i \leq j \leq R_i$ 不成立,则令 $x_j = 1$。该操作的代价为 $1$。 你的目标是使得最终 $x_1 = \cdots = x_N = 1$ 成立。请判断该目标是否可以达成。如果可以达成,请在所有可行方案中,输出总代价最小的一种。

输入格式

输入按以下格式从标准输入读入: > $N$ $M$ > $L_1$ $R_1$ > $\vdots$ > $L_M$ $R_M$

输出格式

如果目标无法达成,输出 `-1`。 如果目标可以达成,则输出总代价的最小值 $K$,以及每次操作选择的操作类型($0$ 或 $1$ 或 $2$),格式如下: > $K$ $\mathrm{op}_1$ $\cdots$ $\mathrm{op}_M$ 如果有多种总代价最小的方案,输出任意一种均可。

说明/提示

### 限制 - $1 \leq N \leq 1000000$ - $1 \leq M \leq 200000$ - $1 \leq L_i \leq R_i \leq N$ - 所有输入的值均为整数 ### 样例解释 1 输出样例中 $x$ 的变化如下: - 初始时 $x = (0,0,0,0,0)$。 - 第 $1$ 次操作选择操作 $2$,$x_1, x_5$ 变为 $1$,$x = (1,0,0,0,1)$。 - 第 $2$ 次操作选择操作 $0$,$x = (1,0,0,0,1)$。 - 第 $3$ 次操作选择操作 $1$,$x_1, x_2, x_3, x_4$ 变为 $1$,$x = (1,1,1,1,1)$。 - 第 $4$ 次操作选择操作 $0$,$x = (1,1,1,1,1)$。 由 ChatGPT 4.1 翻译