CF1208D.Restore Permutation

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

An array of integers p1,p2,…,pnp_{1},p_{2}, \ldots,p_{n} is called a permutation if it contains each number from 11 to nn exactly once. For example, the following arrays are permutations: [3,1,2],[1],[1,2,3,4,5][3,1,2], [1], [1,2,3,4,5] and [4,3,1,2][4,3,1,2]. The following arrays are not permutations: [2],[1,1],[2,3,4][2], [1,1], [2,3,4].

There is a hidden permutation of length nn.

For each index ii, you are given sis_{i}, which equals to the sum of all pjp_{j} such that j<ij \lt i and pj<pip_{j} \lt p_{i}. In other words, sis_i is the sum of elements before the ii-th element that are smaller than the ii-th element.

Your task is to restore the permutation.

一个整数数组 p1,p2,…,pnp_{1},p_{2}, \ldots,p_{n} 被称为排列,当且仅当它恰好包含从 11 到 nn 的每个整数各一次。例如,以下数组均为排列:[3,1,2][3,1,2]、[1][1]、[1,2,3,4,5][1,2,3,4,5] 和 [4,3,1,2][4,3,1,2];而以下数组不是排列:[2][2]、[1,1][1,1]、[2,3,4][2,3,4]。

现存在一个长度为 nn 的隐藏排列。

对每个下标 ii,你将获得 sis_{i},其值等于所有满足 j<ij \lt i 且 pj<pip_{j} \lt p_{i} 的 pjp_{j} 之和。换言之,sis_i 是第 ii 个元素之前所有比它小的元素之和。

你的任务是还原出该排列。

输入格式

The first line contains a single integer nn (1≤n≤2⋅1051 \le n \le 2 \cdot 10^{5}) — the size of the permutation.

The second line contains nn integers s1,s2,…,sns_{1}, s_{2}, \ldots, s_{n} (0≤si≤n(n−1)20 \le s_{i} \le \frac{n(n-1)}{2}).

It is guaranteed that the array ss corresponds to a valid permutation of length nn.

第一行包含一个整数 nn(1≤n≤2⋅1051 \le n \le 2 \cdot 10^{5})—— 表示排列的长度。

第二行包含 nn 个整数 s1,s2,…,sns_{1}, s_{2}, \ldots, s_{n}(0≤si≤n(n−1)20 \le s_{i} \le \frac{n(n-1)}{2})。

保证数组 ss 对应一个长度为 nn 的合法排列。

输出格式

Print nn integers p1,p2,…,pnp_{1}, p_{2}, \ldots, p_{n} — the elements of the restored permutation. We can show that the answer is always unique.

输出 nn 个整数 p1,p2,…,pnp_{1}, p_{2}, \ldots, p_{n} —— 恢复得到的排列的各个元素。可以证明答案总是唯一的。

输入输出样例

  • 输入#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

说明/提示

In the first example for each ii there is no index jj satisfying both conditions, hence sis_i are always 00.

In the second example for i=2i = 2 it happens that j=1j = 1 satisfies the conditions, so s2=p1s_2 = p_1.

In the third example for i=2,3,4i = 2, 3, 4 only j=1j = 1 satisfies the conditions, so s2=s3=s4=1s_2 = s_3 = s_4 = 1. For i=5i = 5 all j=1,2,3,4j = 1, 2, 3, 4 are possible, so s5=p1+p2+p3+p4=10s_5 = p_1 + p_2 + p_3 + p_4 = 10.

在第一个例子中,对每个 ii,都不存在满足两个条件的索引 jj,因此所有 sis_i 恒为 00。

在第二个例子中,当 i=2i = 2 时,j=1j = 1 满足条件,故 s2=p1s_2 = p_1。

在第三个例子中,当 i=2,3,4i = 2, 3, 4 时,仅 j=1j = 1 满足条件,因此 s2=s3=s4=1s_2 = s_3 = s_4 = 1;当 i=5i = 5 时,所有 j=1,2,3,4j = 1, 2, 3, 4 均满足条件,故 s5=p1+p2+p3+p4=10s_5 = p_1 + p_2 + p_3 + p_4 = 10。

输入解题思路,AI测评打分。不知道怎么写?

首页