题目描述
给定一个 (1,2,…,N) 的排列 P=(P1,P2,…,PN)。
对于该排列,定义如下操作 k (k=2,3,…,N):
- 操作 k:依次对 i=1,2,…,k−1,如果 Pi>Pi+1,则交换 P 的第 i 项和第 i+1 项的值。
给定一个长度为 M 的广义单调递增数列 A=(A1,A2,…,AM) (2≤Ai≤N)。
对于每个 i=1,2,…,M,请你求出对 P 依次按顺序执行操作 A1,A2,…,Ai 后,排列 P 的逆序对数。
数列的逆序对数定义如下:对于长度为 n 的数列 x=(x1,x2,…,xn),逆序对数是满足 1≤i<j≤n 且 xi>xj 的整数对 (i,j) 的个数。
输入格式
输入以如下格式从标准输入读入:
N P1 P2 … PN M A1 A2 … AM
输出格式
输出 M 行。第 k 行输出 i=k 时的答案。
样例 1
输入
6
3 2 4 1 6 5
2
4 6
输出
3
1
样例 2
输入
20
12 14 16 8 7 15 19 6 18 5 13 9 10 17 4 1 11 20 2 3
15
3 4 6 8 8 9 10 12 13 15 18 18 19 19 20
输出
117
116
113
110
108
105
103
99
94
87
79
72
65
58
51
说明/提示
限制条件
- 2≤N≤2×105
- 1≤M≤2×105
- 2≤Ai≤N
- P 是 (1,2,…,N) 的一个排列
- 对于 i=1,2,…,M−1,有 Ai≤Ai+1
- 所有输入的值均为整数
样例解释 1
首先执行操作 4。在操作 4 的过程中,P 依次变为 $(3,2,4,1,6,5)\rightarrow(2,3,4,1,6,5)\rightarrow(2,3,4,1,6,5)\rightarrow(2,3,1,4,6,5)$。操作 4 结束后,P 的逆序对数为 3。接着执行操作 6,P 最终变为 (2,1,3,4,5,6),逆序对数为 1。
由 ChatGPT 4.1 翻译