题目描述
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每趟找出第 i 小的元素(也就是 A[i∼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∼n] (保证 A 是排列,即 1∼n 每个数恰好出现一次)和 m 个询问 q[1,2,...,m](保证 q[i]<q[i+1]),请你依次输出第 q[i] 趟之后的序列。
输入格式
第一行 2 个整数 n,m。
第二行 n 个整数 A[1∼n],保证 A 是排列。
第三行 m 个整数 q[1∼m],保证 q[i]<q[i+1]
输出格式
输出 m 行,第 i 行包含 n 个整数代表第 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
6 3
6 4 2 3 1 5
1 3 5
1 4 2 3 6 5
1 2 3 4 6 5
1 2 3 4 5 6
提示
对于所有数据,满足 $1 ≤ 𝑛 ≤ 10^5, 1 ≤ 𝑚 ≤ 10,1 ≤ 𝐴[𝑖] ≤ 𝑛, 1 ≤ 𝑞[𝑖] < 𝑞[𝑖 + 1] < 𝑛$,保证 A 是排列。
对于测试点 1∼8:n≤10
对于测试点 9∼13:n≤2000
对于测试点 14∼20:n≤105