编程题
### 题目描述 给定长度为 $n$ 的排列 $p$ 。 先选择一个区间 [$l$,$r$],然后将该区间翻转,再然后交换该区间的前缀 [$r+1$,$n$] 和后缀 [$1$,$l−1$]。 例如,给定 $n=5$,$p=${$2$,$3$,$1$,$5$,$4$},如果选择区间 $[l=2$,$r=3]$,在反转该区间后得到 $p=${$2$,$1$,$3$,$5$,$4$},然后交换该区间的前缀 $[4$,$5]$ 和后缀 $[1$,$1]$,因此 $p=${$5$,$4$,$1$,$3$,$2$}。 需要输出可以通过恰好应用一次上述操作得到的最数组大字典序的排列。 ### 输入描述 第一行包含一个单独的整数 $n$($1 \leq n \leq 2000$)。 第二行包含 $n$ 个整数:$p_1$,$p_2$,$…$,$p_n$($1\leq p_i \leq n$)。 ### 输出描述 通过应用本题中所述的操作恰好一次从 $p$ 得到长度为 $n$ 的数组字典序最大排列。 ### 输入格式 ``` 9 4 1 6 7 2 8 5 3 9 ``` ### 输出格式 ``` 9 4 1 6 7 2 8 5 3 ``` ### 样例说明 应该选择 [$l=9$,$r=9$] 段。 ### 数据范围 对于所有的测评数据,$1 \leq n \leq 2 \times10^{3}$,$1 \leq p_i \leq n $。
查看答案
赣ICP备20007335号-2