#P5603. 数组分割与交换

数组分割与交换

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

数组操作 代码基础