CF1512E Permutation by Sum
题目描述
一个排列是指由 $1$ 到 $n$ 的 $n$ 个整数组成的序列,其中每个数字恰好出现一次。例如,$[1]$、$[3, 5, 2, 1, 4]$、$[1, 3, 2]$ 都是排列,而 $[2, 3, 2]$、$[4, 3, 1]$、$[0]$ 不是排列。
Polycarp 得到了四个整数 $n$、$l$、$r$($1 \le l \le r \le n$)和 $s$($1 \le s \le \frac{n(n+1)}{2}$),他需要找到一个 $1$ 到 $n$ 的排列 $p$,满足以下条件:
- $s = p_l + p_{l+1} + \ldots + p_r$。
例如,对于 $n=5$,$l=3$,$r=5$,$s=8$,以下排列都是符合条件的(并未列出所有可能):
- $p = [3, 4, 5, 2, 1]$;
- $p = [5, 2, 4, 3, 1]$;
- $p = [5, 2, 1, 3, 4]$。
但是,例如对于 $n=4$,$l=1$,$r=1$,$s=5$,不存在符合条件的排列。
请你帮助 Polycarp,对于给定的 $n$、$l$、$r$ 和 $s$,找到一个满足上述条件的 $1$ 到 $n$ 的排列。如果有多个符合条件的排列,输出任意一个。
输入格式
第一行包含一个整数 $t$($1 \le t \le 500$)。接下来有 $t$ 组测试数据。
每组测试数据包含一行,包含四个整数 $n$($1 \le n \le 500$)、$l$($1 \le l \le n$)、$r$($l \le r \le n$)、$s$($1 \le s \le \frac{n(n+1)}{2}$)。
保证所有测试数据中 $n$ 的总和不超过 $500$。
输出格式
对于每组测试数据,输出一行:
- 如果存在满足条件的排列,输出 $n$ 个整数,表示该排列;
- 否则输出 $-1$。
如果有多个符合条件的排列,输出任意一个即可。
说明/提示
由 ChatGPT 4.1 翻译