CF2217E Definitely Larger
题目描述
给定一个由 $1$ 到 $n$ 组成的排列 $p$。
对于任意长度为 $n$ 的排列 $q$,我们称下标 $j$ 支配下标 $i$ 当且仅当满足以下所有条件:
- $j > i$,
- $p_j > p_i$,并且
- $q_j > q_i$。
另有一个长度为 $n$ 的数组 $d$,其中 $d_i$ 表示支配下标 $i$ 的下标数的个数。
你的任务是构造一个 $1$ 到 $n$ 的排列 $q$,使得对于每一个 $i$($1 \le i \le n$),支配下标 $i$ 的下标数量恰好等于 $d_i$。
如果存在这样的 $q$,请输出任意一个合法的 $q$。否则输出 $-1$。
注:排列是长度为 $n$ 的、由 $1$ 到 $n$ 的各不相同整数构成的数组。例如,$[2,3,1,5,4]$ 是一个排列,但 $[1,2,2]$ 不是($2$ 出现了两次),$[1,3,4]$ 也不是($n=3$ 时却有 $4$ 出现)。
输入格式
每组测试包含多组用例。第一行包含一个整数 $t$($1 \le t \le 1000$),表示测试用例数量。
每组用例的第一行包含一个整数 $n$($1 \le n \le 5000$)。
第二行包含 $n$ 个整数 $p_1, p_2, \ldots, p_n$。保证 $p$ 是 $1$ 到 $n$ 的排列。
第三行包含 $n$ 个整数 $d_1, d_2, \ldots, d_n$($0 \le d_i \le n$)。
保证所有用例中 $n$ 的总和不超过 $5000$。
输出格式
对于每组测试用例:
- 如果可以构造出满足条件的 $q$,输出一行 $q_1, q_2, \ldots, q_n$,表示一个合法的排列。如果有多个合法答案,可以输出任意一个。
- 如果无法构造,输出 $-1$。
说明/提示
在第一个用例中,其中一个合法输出是 $q=[1,2,3]$:
- 对于 $i=1$,有 $p_1=2$,$q_1=1$。下标 $j=2$ 支配 $i=1$,因为 $2>1$,$p_2=3>p_1$,且 $q_2=2>q_1$。下标 $j=3$ 不能支配 $i=1$,因为 $p_3=12$ 并且 $p_j>p_2$ 的下标,所以没有可以支配 $i=2$ 的下标,但 $d_2=1$,无法满足,因此答案为 $-1$。
由 ChatGPT 5 翻译