排序
题目描述
有 $n$ 个人依次站在小 A 面前。小 A 会依次对这 $n$ 个人进行 $m$ 次操作。
每次操作选择一个位置 $k$,将这 $n$ 个人中的所有身高小于等于当前 $k$ 位置的人的身高的人从队伍里拎出,然后按照身高从矮到高的顺序从左到右依次插入到 这些人原本的位置当中。
小 A 对这 $n$ 个人身高构成的序列的逆序对很感兴趣。现在小 A 想要知道每一次操作后这个序列的逆序对数。
----
Update(2021-01-17):$a$ 序列中的逆序对的定义是满足 $i < j$ 且 $a_i > a_j$ 的数对 $(i, j)$。
输入输出格式
输入格式
第一行两个整数 $n$ 和 $m$,表示人数和操作数。
接下来一行 $n$ 个整数 $a_i$,表示初始状态从左到右每个人的身高。
接下来 $m$ 行每行一个数,表示这次操作的 $k$。
输出格式
输出共 $m + 1$ 行,第一行表示未操作时的逆序对数量。
除第一行外第 $i$ 行表示第 $i - 1$ 次操作后序列的逆序对数。
输入输出样例
输入样例 #1
5 2
1 5 3 4 2
3
4
输出样例 #1
5
4
3
说明
**【样例解释 #1】**
第一次操作后序列为 $1, 5, 2, 4, 3$。
第二次操作后序列为 $1, 5, 2, 3, 4$。
**【数据范围】**
对于 $100 \%$ 的数据,$1 \le n,m \le 3 \times {10}^5$,$1 \le k \le n$,$1 \le a_i \le {10}^9$。