B4171 [BCSP-X 2024 6 月小学高年级组] 选择排序

题目描述

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每趟找出第 $i$ 小的元素(也就是 $A[i \sim n]$ 中最小的元素),然后将这个元素与数组第 $i$ 个位置上的元素 $A[i]$ 交换;在 $n-1$ 趟之后序列 $A$ 变为升序。 例如 $A = [3, 4, 1, 5, 2]$: - 第 1 趟交换 $A[1], A[3]$,序列变为 $[1, 4, 3, 5, 2]$; - 第 2 趟交换 $A[2], A[5]$,序列变为 $[1, 2, 3, 5, 4]$; - 第 3 趟交换 $A[3], A[3]$,序列不变; - 第 4 趟交换 $A[4], A[5]$,序列变为 $[1, 2, 3, 4, 5]$; 现在给定初始序列 $A[1 \sim n]$(保证 $A$ 是排列,即 $1 \sim n$ 每个数恰好出现一次)和 $m$ 个询问 $q[1, 2, \ldots, m]$(保证 $q[i] < q[i + 1]$),请你依次输出第 $q[i]$ 趟之后的序列 $A$。

输入格式

第一行 2 个整数 $n, m$。 第二行 $n$ 个整数 $A[1 \sim n]$,保证 $A$ 是排列。 第三行 $m$ 个整数 $q[1 \sim m]$,保证 $q[i] < q[i + 1]$。

输出格式

输出 $m$ 行,第 $i$ 行包含 $n$ 个整数代表第 $q[i]$ 趟之后的序列 $A$。

说明/提示

对于所有数据,满足 $1 \leq n \leq 10^5, 1 \leq m \leq 10, 1 \leq A[i] \leq n, 1 \leq q[i] < q[i + 1] < n$,保证 $A$ 是排列。 - 对于测试点 1~8:$n \leq 10$; - 对于测试点 9~13:$n \leq 2000$; - 对于测试点 14~20:$n \leq 10^5$;