AT_abc421_f [ABC421F] Erase between X and Y

题目描述

有一个序列 $A$。起始时,$A=(0)$。也就是说,$A$ 是一个长度为 $1$ 且唯一元素为 $0$ 的序列。 你需要依次处理 $Q$ 个操作。第 $i$ 个操作($1\leq i\leq Q$)有如下两种形式之一: - `1 x`:在 $A$ 中 $x$ 出现的位置后面插入 $i$。具体地,记当前 $A$ 的第 $j$ 个元素为 $A_j$,$n$ 为 $A$ 当前长度。若 $A_p=x$,则更新 $A$ 为 $(A_1,\dots,A_p,i,A_{p+1},\dots,A_n)$。保证本操作处理前 $A$ 中必然包含 $x$。 - `2 x y`:删除 $A$ 中 $x$ 和 $y$ 之间的所有元素,并输出被删除元素的和。具体地,记当前 $A$ 的第 $j$ 个元素为 $A_j$,$n$ 为 $A$ 当前长度。若 $A_p=x$,$A_q=y$,则输出 $A_{\min(p,q)+1} + \dots + A_{\max(p,q)-1}$,并将 $A$ 更新为 $(A_1,\dots,A_{\min(p,q)},A_{\max(p,q)},\dots,A_n)$。保证本操作处理前 $A$ 中必然包含 $x$ 与 $y$。 注意,对于任意一组操作序列,在处理操作过程中,A 中同样的值不会重复出现,因此某个值在 $A$ 中的位置是唯一的(如果它存在的话)。

输入格式

输入按如下格式从标准输入读入: >$Q$ >$\text{query}_{1}$ >$\text{query}_{2}$ >$\vdots$ >$\text{query}_{Q}$ 其中,$\text{query}_{i}$ 表示第 $i$ 个操作,为下述两种格式之一: >1 $x$ >2 $x$ $y$

输出格式

设一共有 $q$ 个 $2$ 类型操作。请输出 $q$ 行,第 $i$ 行输出第 $i$ 个 $2$ 类型操作的输出结果。

说明/提示

### 样例解释 1 初始时,$A=(0)$。 - 第 $1$ 次操作:在 $0$ 后插入 $1$。$A$ 变为 $(0,1)$。 - 第 $2$ 次操作:在 $1$ 后插入 $2$。$A$ 变为 $(0,1,2)$。 - 第 $3$ 次操作:在 $0$ 后插入 $3$。$A$ 变为 $(0,3,1,2)$。 - 第 $4$ 次操作:删除 $2$ 和 $3$ 之间的元素,也就是 $1$,输出 $1$。$A$ 变为 $(0,3,2)$。 - 第 $5$ 次操作:在 $2$ 后插入 $5$。$A$ 变为 $(0,3,2,5)$。 - 第 $6$ 次操作:删除 $0$ 和 $5$ 之间的元素,即 $3,2$,输出 $5$。$A$ 变为 $(0,5)$。 ### 样例解释 2 第 $2$ 次操作中,删除 $0$ 和 $1$ 之间的元素,但它们之间其实没有元素,所以输出 $0$。 ### 数据范围 - $1 \le Q \le 5\times 10^5$ - 对于第 $i$ 个操作: - 若为 $1$ 类型操作: - $0 \le x < i$ - 操作前 $A$ 中一定包含 $x$。 - 若为 $2$ 类型操作: - $0\le x < y < i$ - 操作前 $A$ 中一定包含 $x$ 和 $y$。 - 所有输入均为整数。 由 ChatGPT 5 翻译