#CF2193B. Reverse a Permutation

    ID: 7019 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>贪心CodeforcesCodeforces Round 1076(Div3)Div3BCF2193B800

Reverse a Permutation

题目描述

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

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

  • 选择两个整数 l,r l, r 1lrn 1\le l\le r\le n )。

  • 反转排列 p p [l,r] [l, r] 这一段。

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

输入格式

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

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

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

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

输出格式

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

样例

4
4
3 2 1 4
3
3 1 2
4
4 3 2 1
2
2 1
4 1 2 3 
3 2 1 
4 3 2 1 
2 1

样例说明

对于第一个测试用例,最优的区间是 [1,4] [1, 4] 。反转后,a=[4,1,2,3] a = [4, 1, 2, 3] 。对于第二个测试用例,最优的区间是 [2,3] [2, 3] 。反转后,a=[3,2,1] a = [3, 2, 1]
由 DeepSeek 完成翻译

来源

Codeforces 2193B,英文题名 Reverse a Permutation。