该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
序列重构(border)
题目描述
Y 同学是一位对字符串 Border 性质深有研究的学者。最近,他提出了一个关于逆向构造的有趣问题。
给定一个长度为 N 的整数序列 A=(A1,A2,…,AN),其中每一个元素 Ai 均满足 0≤Ai<i。你需要构造一个长度同样为 N 的正整数序列 S=(S1,S2,…,SN),使得该序列满足以下所有条件:
- 对于所有的 i∈[1,N],有 1≤Si≤N。
- 对于所有的 i∈[1,N],序列 S 的前缀 S[1…Ai] 与序列 S 前 i 个元素构成的子串的后缀 S[i−Ai+1…i] 完全相同。即:对于所有的 j∈[1,Ai],均满足 Sj=Si−Ai+j。
- 在满足上述所有约束的前提下,序列 S 中出现的不同元素的数量必须达到最大。
- 在满足上述所有约束且不同元素数量最大的前提下,序列 S 的字典序必须最小。
Y 同学可以轻松地解决这个问题,但他想考考你。
输入格式
第一行包含一个整数 N,表示序列 A 的长度。
第二行包含 N 个整数,第 i 个整数为 Ai,表示题目给定的限制条件。
输出格式
输出一行 N 个由空格隔开的整数,表示构造出的序列 S。
样例
样例输入 #1
5
0 0 1 2 3
样例输出 #1
1 2 1 2 1
样例输入 #2
11
0 0 0 0 2 1 0 0 3 0 1
样例输出 #2
1 2 3 1 2 1 1 2 3 4 1
数据范围与约定
对于 100% 的数据,保证 1≤N≤2⋅105,且对于所有的 i∈[1,N],均有 0≤Ai<i。
| 测试点编号 |
分值 |
N≤ |
特殊性质 |
| 1∼2 |
10 |
10 |
无 |
| 3∼6 |
20 |
3000 |
特殊性质 A |
| 7∼10 |
特殊性质 B |
| 11∼14 |
无 |
| 15∼20 |
30 |
2⋅105 |
- 特殊性质 A:对于所有的 i∈[1,N],保证 Ai≤1。
- 特殊性质 B:对于所有的 i∈[1,N],保证 Ai∈{0,i−1}。