AT_awtf2026algo_d Adj Swap Lex Max
题目描述
给定排列 $P$ 和 $Q$,它们都是 $ (1,2,\ldots,N) $ 的一个排列。已知 $P$ 在字典序上不大于 $Q$。
你可以进行如下操作任意次(也可以不做):
- 选择 $P$ 的两个相邻元素并交换。这需要满足以下条件:
- 操作后的 $P$ 依然在字典序上不大于 $Q$。
- 设 $(x,y)$ 为被交换的两个值,$(x,y)$ 这对数对在之前的操作中从未被交换过(无论顺序,即一旦交换过 $(x,y)$,则 $(x,y)$ 和 $(y,x)$ 都不能再交换)。
请你求出 $P$ 最终能变成的字典序最大的排列。
一共有 $T$ 组测试数据,请分组输出答案。
输入格式
输入从标准输入读取,格式如下:
> $T$
> $case_1$
> $case_2$
> $\vdots$
> $case_T$
每组测试数据格式如下:
> $N$
> $P_1$ $P_2$ $\ldots$ $P_N$
> $Q_1$ $Q_2$ $\ldots$ $Q_N$
输出格式
对于每组测试数据,输出所求的排列。
说明/提示
### 样例解释 1
在第一组测试数据中,最优操作如下:
- 初始 $P=(1,2,3)$。
- 交换 $(2,3)$,得到 $P=(1,3,2)$。
- 交换 $(1,3)$,得到 $P=(3,1,2)$。
在第二组测试数据中,不进行任何操作是最优的。
### 数据范围
- $1 \leq T \leq 500000$
- $2 \leq N \leq 10^6$
- $P$ 是 $ (1,2,\ldots,N) $ 的一个排列。
- $Q$ 是 $ (1,2,\ldots,N) $ 的一个排列。
- $P$ 在字典序上不大于 $Q$。
- 所有输入均为整数。
- 所有 $T$ 组数据中 $N$ 的总和不超过 $10^6$。
由 ChatGPT 5 翻译