CF1157E Minimum Array

题目描述

给定两个长度为 $n$ 的数组 $a$ 和 $b$,其中所有元素均在 $0$ 到 $n-1$ 之间。 你可以重新排列数组 $b$ 的元素(如果愿意,也可以保持原顺序)。之后,定义长度为 $n$ 的数组 $c$,其中第 $i$ 个元素为 $c_i = (a_i + b_i) \% n$,这里 $x \% y$ 表示 $x$ 对 $y$ 取模。 你的任务是重新排列数组 $b$ 的元素,使得得到的数组 $c$ 字典序最小。 长度为 $n$ 的数组 $x$ 的字典序小于数组 $y$,当且仅当存在某个 $i$($1 \le i \le n$),使得 $x_i < y_i$,且对于所有 $j$($1 \le j < i$),都有 $x_j = y_j$。

输入格式

输入的第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$),表示数组 $a$、$b$ 和 $c$ 的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i < n$),表示数组 $a$ 的元素。 第三行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$($0 \le b_i < n$),表示数组 $b$ 的元素。

输出格式

输出字典序最小的数组 $c$。你的任务是重新排列数组 $b$,使得得到的数组 $c$ 字典序最小,其中第 $i$ 个元素为 $c_i = (a_i + b_i) \% n$。

说明/提示

由 ChatGPT 4.1 翻译