#T1555. 恢复排列(Restore Permutation)

0

恢复排列(Restore Permutation)

恢复排列(Restore Permutation)

题目描述

小 Z 有一个长度为 nn 的全排列数组 P=[p1,p2,⋯ ,pn]P=[p_1,p_2,\cdots,p_n],但是健忘的小 Z 已经忘记了排列的样子。

不过小 Z 记录了一个 sum[]sum[] 数组,其中 sum[i]=∑j=1i−1[pj<pi]pjsum[i]=\sum_{j=1}^{i-1}[p_j<p_i]p_j,通俗一点来讲,sum[i]sum[i] 表示所有 1≤j<i1\le j < i 并且满足 pj<pip_j<p_i 的 pjp_j 的和。

举个例子:

当 P=[1,4,3,2,5]P=[1,4,3,2,5] 时,sum[1]=0sum[1]=0, sum[2]=p1=1sum[2]=p_1=1, sum[3]=p1=1sum[3]=p_1=1, sum[4]=p1=1sum[4]=p_1=1, sum[5]=p1+p2+p3+p4=10sum[5]=p_1+p_2+p_3+p_4=10。

现在,小 Z 想要你根据这个 sum[]sum[] 数组求出原来的排列 PP。

输入格式

第一行输入一个整数 nn 表示排列长度。

接下来一行有 nn 个整数,分别为 sum1,sum2,⋯ ,sumnsum_1,sum_2,\cdots,sum_n。

输出格式

输出一行 nn 个整数,表示原来的排列是什么。可以证明,这个排列是唯一的。

样例输入 #1

3
0 0 0

样例输出 #1

3 2 1

样例输入 #2

2
0 1

样例输出 #2

1 2

样例输入 #3

5
0 1 1 1 10

样例输出 #3

1 4 3 2 5

数据范围

1≤n≤2∗105,0≤sumi≤n(n−1)21\le n \le 2*10^5,0\le sum_i \le \frac{n(n-1)}{2}。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):1600。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~3 样例
1 25 4~8 小规模与边界测试数据
2 30 9~16 中等规模测试数据
3 35 17~25 满规模极限测试数据

出处:原题链接