atcoder#ARC080C. [ARC080E] Young Maids

[ARC080E] Young Maids

题目描述

N N を正の偶数とします。

(1, 2, ..., N) (1,\ 2,\ ...,\ N) の順列 p = (p1, p2, ..., pN) p\ =\ (p_1,\ p_2,\ ...,\ p_N) があります。 すぬけ君は、次の手続きによって (1, 2, ..., N) (1,\ 2,\ ...,\ N) の順列 q q を作ろうとしています。

まず、空の数列 q q を用意します。 p p が空になるまで、次の操作を繰り返します。

  • p p の隣り合う 2 2 つの要素を選び、順に x x , y y とする。 x x , y y p p から取り除き (このとき、p p 2 2 だけ短くなる)、x x , y y をこの順のまま q q の先頭へ追加する。

p p が空になったとき、q q (1, 2, ..., N) (1,\ 2,\ ...,\ N) の順列になっています。

辞書順で最小の q q を求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N p1 p_1 p2 p_2 ... ... pN p_N

输出格式

辞書順で最小の q q を空白区切りで出力せよ。

题目大意

给定正偶数 NN

给定 NN 元排列 p=(p1,p2,...,pN)p = (p_1, p_2, ..., p_N). Snuke 打算根据下述步骤构造一个 NN 元排列 qq

首先,令 qq 为空。接下来,执行下述操作直到 pp 为空。

  • 选择 pp 中两个相邻元素 ,按原顺序设它们是 xxyy. 从 pp 中移除 xxyy,将它们按顺序接在 qq 的前面。

试求可能的形成的 qq 中,字典序最小的排列。

4
3 2 4 1
3 1 2 4
2
1 2
1 2
8
4 6 3 2 8 5 7 1
3 1 2 7 4 6 8 5

提示

制約

  • N N は偶数である。
  • 2 < = N < = 2 × 105 2\ <\ =\ N\ <\ =\ 2\ ×\ 10^5
  • p p (1, 2, ..., N) (1,\ 2,\ ...,\ N) の順列である。

Sample Explanation 1

次の順に操作を行えばよいです。 p p q q (3, 2, 4, 1) (3,\ 2,\ 4,\ 1) () () ↓ ↓ (3, 1) (3,\ 1) (2, 4) (2,\ 4) ↓ ↓ () () (3, 1, 2, 4) (3,\ 1,\ 2,\ 4)

Sample Explanation 3

次の順に操作を行えばよいです。 p p q q (4, 6, 3, 2, 8, 5, 7, 1) (4,\ 6,\ 3,\ 2,\ 8,\ 5,\ 7,\ 1) () () ↓ ↓ (4, 6, 3, 2, 7, 1) (4,\ 6,\ 3,\ 2,\ 7,\ 1) (8, 5) (8,\ 5) ↓ ↓ (3, 2, 7, 1) (3,\ 2,\ 7,\ 1) (4, 6, 8, 5) (4,\ 6,\ 8,\ 5) ↓ ↓ (3, 1) (3,\ 1) (2, 7, 4, 6, 8, 5) (2,\ 7,\ 4,\ 6,\ 8,\ 5) ↓ ↓ () () (3, 1, 2, 7, 4, 6, 8, 5) (3,\ 1,\ 2,\ 7,\ 4,\ 6,\ 8,\ 5)