#ATarc181d. [ARC181D] Prefix Bubble Sort

[ARC181D] Prefix Bubble Sort

题目描述

给定一个 (1,2,,N)(1,2,\dots,N) 的排列 P=(P1,P2,,PN)P=(P_1,P_2,\dots,P_N)

对于该排列,定义如下操作 k (k=2,3,,N)k\ (k=2,3,\dots,N)

  • 操作 kk:依次对 i=1,2,,k1i=1,2,\dots,k-1,如果 Pi>Pi+1P_i > P_{i+1},则交换 PP 的第 ii 项和第 i+1i+1 项的值。

给定一个长度为 MM广义单调递增数列 A=(A1,A2,,AM) (2AiN)A=(A_1,A_2,\dots,A_M)\ (2 \leq A_i \leq N)

对于每个 i=1,2,,Mi=1,2,\dots,M,请你求出对 PP 依次按顺序执行操作 A1,A2,,AiA_1,A_2,\dots,A_i 后,排列 PP 的逆序对数。

数列的逆序对数定义如下:对于长度为 nn 的数列 x=(x1,x2,,xn)x=(x_1,x_2,\dots,x_n),逆序对数是满足 1i<jn1 \leq i < j \leq nxi>xjx_i > x_j 的整数对 (i,j)(i,j) 的个数。

输入格式

输入以如下格式从标准输入读入:

NN P1P_1 P2P_2 \dots PNP_N MM A1A_1 A2A_2 \dots AMA_M

输出格式

输出 MM 行。第 kk 行输出 i=ki=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

说明/提示

限制条件

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • 1M2×1051 \leq M \leq 2 \times 10^5
  • 2AiN2 \leq A_i \leq N
  • PP(1,2,,N)(1,2,\dots,N) 的一个排列
  • 对于 i=1,2,,M1i=1,2,\dots,M-1,有 AiAi+1A_i \leq A_{i+1}
  • 所有输入的值均为整数

样例解释 1

首先执行操作 44。在操作 44 的过程中,PP 依次变为 $(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)$。操作 44 结束后,PP 的逆序对数为 33。接着执行操作 66PP 最终变为 (2,1,3,4,5,6)(2,1,3,4,5,6),逆序对数为 11

由 ChatGPT 4.1 翻译