已结束 GESP排位赛#6
← 上一题 下一题 →

A1791 | 上一个排列

时间限制1s
内存限制512MB
通过 / 提交0/0

题目描述

时间限制:1000ms

内存限制:512MB

在一个虚拟世界中,Macw 是一名寻宝冒险家,他在一本古老的地图上发现了一连串的谜题,每一个谜题都代表着一个宝藏的位置。这些谜题由一串数字排列组成,称为"字典序排列"。Macw 将这个问题带给了你,希望聪明的你能帮助 Macw 解决这道题目。

你将会给到一个名为 $origin$ 的字典序排列和名为 $current$ 的初始排列。

现定义$origin$排列作为按照字典序排序的第一个排列,即定义 $origin[i] < origin[j](1 \le i < j \le n)$,请忽略 $origin[i]$ 的实际数值大小。

你的任务是找出 $current$ 根据 $origin$ 作为第一个按照字典序排列的上一个字典序排列。

举例而言,如果第一个字典序排列 $origin=[1, 2, 3, 4, 5]$,则下一个按照字典序的排列是 $[1, 2, 3, 5, 4]$。

同样地,如果第一个字典序排列 $origin=[1, 3, 5, 6, 2]$,则 $origin$ 的下一个字典序排列为 $[1, 3, 5, 2, 6]$。反之,如果当前排列为 $current=[1, 3, 5, 2, 6]$,若以 $origin$ 作为参考,则上一个字典序排列应为 $[1, 3, 5, 6, 2]$。

输入格式

输入数据包含三行,
第一行输入一个整数 $n$,代表序列的长度。
第二行输入 $n$ 个不同的整数,表示初始排列,用空格相隔开。
第三行输入 $n$ 个不同的整数,表示当前排列,用空格相隔开。

输出格式

输出包含一行 $n$ 个整数,用空格相隔开。表示当前排列以初始排列为参考(作为第一个排列)的情况下的上一个排列。

输入输出样例

输入 #1
5
1 3 5 6 2
1 3 5 2 6
输出 #1
1 3 5 6 2
输入 #2
7
1 3 5 7 8 9 11
11 7 8 9 3 5 1
输出 #2
11 7 8 9 3 1 5
输入 #3
3
8 5 7
5 7 8
输出 #3
5 8 7
C++ 编辑器
输入
输出