#P3581. Sequence

    ID: 2582 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>图结构POJ Founder Monthly Contest – 2008.04.13Yao Jinyu

Sequence

描述 给定一个序列 A1,A2,...,An{A₁, A₂, ..., An},保证其满足A1>A2>...>An A₁ > A₂ > ... > An。请将其分割为三个子序列,分别对每个子序列进行反转,从而形成一个按字典序尽可能小的新序列。

字典序定义如下:对于两个序列 A1,A2,...,An{A₁, A₂, ..., An}B1,B2,...,Bn{B₁, B₂, ..., Bn},当且仅当存在某个 i1ini(1 ≤ i ≤ n),使得 Ai<BiAᵢ < Bᵢ且对于所有 且对于所有 j < i 都有都有 Aⱼ = Bⱼ 时,称时,称 {A₁, A₂, ..., An}的字典序小于 的字典序小于 {B₁, B₂, ..., Bn}$。

输入

第一行包含整数nn200000)。 n(n ≤ 200000)。 接下来 nn 行依次给出序列的元素。

输出

输出 nn 行,表示可获得的字典序最小的序列。 输入数据示例 1

5

10

1

2

3

4

输出数据示例 1

1

10

2

4

3

提示 {10, 1, 2, 3, 4} → {10, 1 | 2 | 3, 4} → {1, 10, 2, 4, 3} (注:题目要求生成的数据元素互不相同,无需解决问题,仅需提供数据生成程序。)