CF2101B.Quartet Swapping

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个长度为 nn 的排列 aa ∗^{\text{∗}}。你可以进行以下操作任意次数(包括零次):

  • 选择一个下标 1≤i≤n−31 \le i \le n - 3。然后,同时交换 aia_i 和 ai+2a_{i+2},以及 ai+1a_{i+1} 和 ai+3a_{i+3}。换句话说,排列 aa 将从 […,ai,ai+1,ai+2,ai+3,…][\ldots, a_i, a_{i+1}, a_{i+2}, a_{i+3}, \ldots] 变为 […,ai+2,ai+3,ai,ai+1,…][\ldots, a_{i+2}, a_{i+3}, a_i, a_{i+1}, \ldots]。

请确定通过任意次上述操作后能得到的字典序最小的排列 †^{\text{†}}。

∗^{\text{∗}} 一个长度为 nn 的排列是由 11 到 nn 的 nn 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(因为 22 出现了两次),[1,3,4][1,3,4] 也不是排列(n=3n=3 但数组中出现了 44)。

†^{\text{†}} 对于两个相同长度的数组 xx 和 yy,xx 字典序小于 yy 当且仅当满足以下条件:

  • 在第一个 xx 和 yy 不同的位置,xx 的元素小于 yy 的对应元素。

输入格式

多组数据,第一行一个整数 t(1≤t≤1000)t(1\le t\le 1000)。

对于每组数据,第一行一个整数 n(4≤n≤2×105)n(4\le n\le 2\times 10^5)。
第二行 nn 个整数 a1,a2,⋯ ,an(1≤ai≤n)a_1,a_2,\cdots,a_n(1\le a_i\le n),保证 aa 为 11 到 nn 的排列。

保证所有测试点的 nn 之和不超过 2×1052\times 10^5。

输出格式

对于每组数据,输出一行 nn 个整数,表示可以得到的字典序最小的排列。

输入输出样例

  • 输入#1

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

    输出#1

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

说明/提示

样例解释

第一组数据中,选择 i=1i=1 执行一次操作,排列变为 [1,2,3,4][1,2,3,4],可以证明这是可以得到的字典序最小的排列。

第二组数据中,一种可以得到字典序最小的排列的操作如下:

  • 选择 i=2i=2 执行一次操作,排列变为 [5,1,2,4,3][5,1,2,4,3];
  • 选择 i=1i=1 执行一次操作,排列变为 [2,4,5,1,3][2,4,5,1,3];
  • 选择 i=2i=2 执行一次操作,排列变为 [2,1,3,4,5][2,1,3,4,5]。

输入解题思路,AI测评打分。不知道怎么写?

首页