题目描述
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每趟找出第 i 小的元素(也就是 A[i]∼A[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] 不变,序列不变。
第4趟选择排序,将 A[4],A[5] 交换,序列变为 [1,2,3,4,5]。
现在给定一个包含 A[1∼n](保证A是排列,即 1∼n 这 n 个数恰好出现一次)和 m 个询问 q[1,2,,,,,m](保证 q[i]<q[i+1]),请你依次模拟输出第 q[i] 趟之后的序列 A。
输入格式
第一行:2 个整数 n 和 m。
第二行:n 个整数 A[1∼n],保证 A 是排列。
第三行:m 个整数 q[1∼m],保证 q[i]<q[i+1]。
输出格式
输出 m 行,每行包含一个整数,代表第 q[i] 趟之后的序列 A。
5 4
3 4 1 5 2
1 2 3 4
1 4 3 5 2
1 2 3 5 4
1 2 3 5 4
1 2 3 4 5
数据范围
- 对于所有数据,均有 $1 \leq n \leq 10^5, 1 \leq m \leq 10, 1 \leq A[i] \leq n, 1 \leq q[i] \leq q[i+1] \leq n$,保证A是排列。
- 对于测试组 1~ 8:有 n≤10。
- 对于测试组 9 ~ 13:有 n≤2000。
- 对于测试组 14 ~ 20:有 n≤105。