#4444. 数组分割与交换

数组分割与交换

数组分割与交换

题目描述

给定一个长度为 n 的整数数组 a,请你完成以下操作:

  1. 将数组 a 分割为两个新数组:

    • 数组 b 包含 a 中所有的偶数(保持在 a 中出现的相对顺序)
    • 数组 c 包含 a 中所有的奇数(保持在 a 中出现的相对顺序)
  2. 执行 m 次交换操作,操作分为以下两种类型:

    • 若操作格式为 1 x y,表示交换数组 b 中第 x 个元素和第 y 个元素(xy 均为 1 基索引)
    • 若操作格式为 2 x y,表示交换数组 c 中第 x 个元素和第 y 个元素(xy 均为 1 基索引)

完成所有操作后,请你依次输出数组 b 和数组 c 中的所有元素。

输入格式

第一行包含一个整数 n,表示数组 a 的长度。

第二行包含 n 个整数,分别表示数组 a 的元素。

第三行包含一个整数 m,表示交换操作的次数。

接下来 m 行,每行包含三个整数 op, x, y,表示一次交换操作,含义如题目描述。

输出格式

第一行输出数组 b 中的所有元素,元素之间用空格分隔。

第二行输出数组 c 中的所有元素,元素之间用空格分隔。

样例输入

6
1 2 3 4 5 6
3
1 1 2
2 1 2
1 1 3

样例输出

6 2 4
3 1 5

样例说明

  1. 初始分割:

    • 数组 b(偶数):[2, 4, 6]
    • 数组 c(奇数):[1, 3, 5]
  2. 执行操作:

    • 操作 1 1 2:交换 b[1]b[2]b 变为 [4, 2, 6]
    • 操作 2 1 2:交换 c[1]c[2]c 变为 [3, 1, 5]
    • 操作 1 1 3:交换 b[1]b[3]b 变为 [6, 2, 4]
  3. 最终输出:

    • b 数组:6 2 4
    • c 数组:3 1 5

数据范围

  • 1 ≤ n ≤ 1000
  • 数组 a 中的元素为整数,范围在 [-1000, 1000] 之间
  • 1 ≤ m ≤ 1000
  • 对于所有操作,xy 均为有效的数组索引(即不会超出对应数组的长度范围)