AT_joi2023ho_a 碁石ならべ 2 (Stone Arranging 2)
题目描述
JOI 君有 $N$ 个围棋子。每个棋子都被编号为 $1$ 到 $N$,且被涂上了用 $1$ 到 $10^9$ 之间的整数表示的颜色。最初,第 $i$ ($1 \leq i \leq N$) 个棋子的颜色为 $A_i$。
JOI 君接下来要进行 $N$ 次操作,把围棋子按一行依次放在桌子上。第 $i$ 次操作($1 \leq i \leq N$)按照如下步骤进行:
1. 将第 $i$ 个棋子放在第 $i-1$ 个棋子的右侧。如果 $i = 1$,则将第 $1$ 个棋子放在桌子上。
2. 在第 $1, 2, \dots, i-1$ 个棋子中,如果存在当前颜色与第 $i$ 个棋子相同的棋子,则取编号最大的那一个记为 $j$,将第 $j+1, j+2, \dots, i-1$ 个棋子的颜色全部改为 $A_i$。
为了检验是否正确操作,JOI 君想提前了解所有操作后每个棋子的颜色。
给定棋子的信息,请编写程序,求出经过 $N$ 次操作后每个棋子的颜色。
输入格式
输入将以下述格式由标准输入给出:
> $N$
> $A_1$
> $A_2$
> $\vdots$
> $A_N$
输出格式
请按顺序输出 $N$ 行。第 $i$ 行($1 \leq i \leq N$)输出经过 $N$ 次操作后第 $i$ 个棋子的颜色。
说明/提示
## 子任务
1. ($25$ 分)$N \leq 2\,000$。
2. ($35$ 分)$A_i \leq 2$($1 \leq i \leq N$)。
3. ($40$ 分)没有额外限制。
---
### 样例解释 1
操作过程如下表:
| 操作 | 棋子颜色排列 | 说明 |
| :--- | :----------- | :--- |
| $1$ | $1$ | 第 $1$ 个棋子放上桌。|
| $2$ | $1,2$ | 第 $2$ 个棋子放在第 $1$ 个棋子右边。|
| $3$ | $1,2,1$ | 第 $3$ 个棋子放在第 $2$ 个棋子右边。|
| $3$ | $1,1,1$ | 将第 $2$ 个棋子的颜色改为 $1$。|
| $4$ | $1,1,1,2$ | 第 $4$ 个棋子放在第 $3$ 个棋子右边。|
| $5$ | $1,1,1,2,3$ | 第 $5$ 个棋子放在第 $4$ 个棋子右边。|
| $6$ | $1,1,1,2,3,2$ | 第 $6$ 个棋子放在第 $5$ 个棋子右边。|
| $6$ | $1,1,1,2,2,2$ | 将第 $5$ 个棋子的颜色改为 $2$。|
最终,第 $1,2,3,4,5,6$ 个棋子的颜色依次为 $1,1,1,2,2,2$。
本输入样例满足子任务 $1, 3$ 的限制条件。
---
### 样例解释 2
本输入输出样例满足所有子任务的限制条件。
# 数据范围
- $1 \leq N \leq 200\,000$。
- $1 \leq A_i \leq 10^9$($1 \leq i \leq N$)。
- 所有输入均为整数。
由 ChatGPT 5 翻译