#ATarc165f. [ARC165F] Make Adjacent

[ARC165F] Make Adjacent

题目描述

我们称长度为 2n2n 的整数序列 X=(X1,X2,,X2n)X=(X_1,X_2,\dots,X_{2n}),如果对于所有 i=1,2,,ni=1,2,\dots,n 都满足 X2i1=X2iX_{2i-1}=X_{2i},则称 XX良好数列

给定一个长度为 2N2N 的整数序列 A=(A1,A2,,A2N)A=(A_1,A_2,\dots,A_{2N})。该序列包含每个整数 i=1,2,,Ni=1,2,\dots,N 恰好各 22 个。

你可以对 AA 进行若干次“交换相邻的两个元素”的操作(可以为 00 次),希望将 AA 变为良好数列

设将 AA 变为良好数列所需的最小操作次数为 KK。请你输出对 AA 进行 KK 次操作后,能够得到的良好数列中字典序最小的一个,元素之间用空格分隔。

数列的字典序定义如下:设 S=(S1,S2,,SS)S=(S_1,S_2,\ldots,S_{|S|})T=(T1,T2,,TT)T=(T_1,T_2,\ldots,T_{|T|}),则 SS 的字典序小于 TT 当且仅当满足以下两条之一。这里 S,T|S|,|T| 分别表示 S,TS,T 的长度。

  1. S<T|S|<|T|(S1,S2,,SS)=(T1,T2,,TS)(S_1,S_2,\ldots,S_{|S|})=(T_1,T_2,\ldots,T_{|S|})
  2. 存在整数 1imin{S,T}1\leq i\leq \min\lbrace |S|,|T| \rbrace,使得同时满足:
    • (S1,S2,,Si1)=(T1,T2,,Ti1)(S_1,S_2,\ldots,S_{i-1})=(T_1,T_2,\ldots,T_{i-1})
    • SiS_iTiT_i 小(按数值比较)。

输入格式

输入以以下格式从标准输入读入。

NN A1A_1 A2A_2 \dots A2NA_{2N}

输出格式

请输出对 AA 进行 KK 次操作后能够得到的良好数列中字典序最小的一个,元素之间用空格分隔。

样例 1

输入

3
3 2 1 2 3 1

输出

2 2 3 3 1 1

样例 2

输入

3
1 1 2 2 3 3

输出

1 1 2 2 3 3

样例 3

输入

15
15 12 11 10 5 11 13 2 6 14 3 6 5 14 10 15 1 2 13 9 7 4 9 1 3 8 12 4 8 7

输出

11 11 5 5 6 6 10 10 14 14 15 15 2 2 12 12 13 13 1 1 3 3 9 9 4 4 7 7 8 8

说明/提示

限制条件

  • 1N2×1051\leq N\leq 2\times 10^5
  • 1AiN1\leq A_i\leq N
  • 每个整数 i=1,2,,Ni=1,2,\dots,NAA 中恰好出现 22
  • 输入的所有值均为整数

样例解释 1

例如,$(3,2,1,2,3,1)\rightarrow (3,2,1,3,2,1)\rightarrow (3,2,3,1,2,1)\rightarrow (3,3,2,1,2,1)\rightarrow (3,3,2,2,1,1)$,这样经过 44 次操作可以将 AA 变为良好数列,这是所需的最小操作次数。在 44 次操作下,也可以得到 A=(2,2,3,3,1,1)A=(2,2,3,3,1,1),因此答案为 (2,2,3,3,1,1)(2,2,3,3,1,1)

由 ChatGPT 4.1 翻译