CF1833B Restore the Weather
题目描述
给定一个数组 $a$,表示 Berlandia 最近 $n$ 天的天气预报。即 $a_i$ 表示第 $i$ 天的预计气温($1 \le i \le n$)。
还给定一个数组 $b$,表示每一天的实际气温,但数组 $b$ 的所有数值顺序被打乱了。
请确定每一天实际的气温分别是多少。已知实际气温与预报气温的差值不会超过 $k$ 度。换句话说,如果第 $i$ 天的实际气温为 $c$,则总有 $|a_i - c| \le k$。
例如,设数组 $a = [1, 3, 5, 3, 9]$,长度 $n = 5$,$k = 2$,数组 $b = [2, 5, 11, 2, 4]$。那么可以将 $b$ 重排为 $[2, 2, 5, 4, 11]$,使得:
- 第 $1$ 天,$|a_1 - b_1| = |1 - 2| = 1$,$1 \le 2 = k$,满足条件;
- 第 $2$ 天,$|a_2 - b_2| = |3 - 2| = 1$,$1 \le 2 = k$,满足条件;
- 第 $3$ 天,$|a_3 - b_3| = |5 - 5| = 0$,$0 \le 2 = k$,满足条件;
- 第 $4$ 天,$|a_4 - b_4| = |3 - 4| = 1$,$1 \le 2 = k$,满足条件;
- 第 $5$ 天,$|a_5 - b_5| = |9 - 11| = 2$,$2 \le 2 = k$,满足条件。
输入格式
输入的第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 $n$($1 \le n \le 10^5$)和 $k$($0 \le k \le 10^9$),分别表示天数和每一天预报与实际气温的最大允许差值。
每个测试用例的第二行包含 $n$ 个整数,表示数组 $a$ 的元素($-10^9 \le a_i \le 10^9$)。
每个测试用例的第三行包含 $n$ 个整数,表示数组 $b$ 的元素($-10^9 \le b_i \le 10^9$)。
保证所有测试用例中 $n$ 的总和不超过 $10^5$,并且总能将数组 $b$ 重排,使得对所有 $i$ 都有 $|a_i - b_i| \le k$。
输出格式
对于每个测试用例,输出一行,包含恰好 $n$ 个整数,表示每一天的实际气温(按顺序排列)。
如果有多种答案,输出任意一种均可。
说明/提示
由 ChatGPT 4.1 翻译