Description
# 数组分割与交换
## 题目描述
给定一个长度为 `n` 的整数数组 `a`,请你完成以下操作:
1. 将数组 `a` 分割为两个新数组:
- 数组 `b` 包含 `a` 中所有的偶数(保持在 `a` 中出现的相对顺序)
- 数组 `c` 包含 `a` 中所有的奇数(保持在 `a` 中出现的相对顺序)
2. 执行 `m` 次交换操作,操作分为以下两种类型:
- 若操作格式为 `1 x y`,表示交换数组 `b` 中第 `x` 个元素和第 `y` 个元素(`x` 和 `y` 均为 1 基索引)
- 若操作格式为 `2 x y`,表示交换数组 `c` 中第 `x` 个元素和第 `y` 个元素(`x` 和 `y` 均为 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
- 对于所有操作,`x` 和 `y` 均为有效的数组索引(即不会超出对应数组的长度范围)
Source
数组操作 代码基础