测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A16772. Reverse a Permutation

编程题 普及-
知识点

题目描述

一个长度为 $ n $ 的排列是由 $ 1 $ 到 $ n $ 的 $ n $ 个不同整数按任意顺序组成的数组。例如,$ [2,3,1,5,4] $ 是一个排列,但 $ [1,2,2] $ 和 $ [1,3,4] $ 不是排列。

给定一个长度为 $ n $ 的排列 $ p $。你可以恰好执行一次以下操作:

- 选择两个整数 $ l, r $($ 1\le l\le r\le n $)。

- 反转排列 $ p $ 中 $ [l, r] $ 这一段。

你的任务是输出执行此操作后可以得到的字典序最大的排列。排列 $ a $ 字典序大于排列 $ b $ 当且仅当在它们第一个不同的位置 $ i $ 上,有 $ a_i \gt b_i $。

输入格式

每个测试包含多个测试用例。第一行包含一个整数 $ t $($ 1\le t\le 10^4 $)—— 测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含数字 $ n $($ 1\le n\le 2\cdot 10^5 $)。

每个测试用例的第二行包含 $ n $ 个不同的整数 $ p_1, p_2,\dots,p_n $($ 1\le p_i\le n $)。

保证所有测试用例的 $ n $ 值之和不超过 $ 2\cdot 10^5 $。

输出格式

对于每个测试用例,输出通过一次操作可以得到的字典序最大的排列。

输入输出样例

输入 #1
4
4
3 2 1 4
3
3 1 2
4
4 3 2 1
2
2 1
输出 #1
4 1 2 3 
3 2 1 
4 3 2 1 
2 1

说明/提示

对于第一个测试用例,最优的区间是 $ [1, 4] $。反转后,$ a = [4, 1, 2, 3] $。对于第二个测试用例,最优的区间是 $ [2, 3] $。反转后,$ a = [3, 2, 1] $。
上一题 去做题 下一题