前缀冒泡排序
时间限制:2s
空间限制:1024MB
题目描述
给定 (1,2,…,N) 的一个排列 P=(P1,P2,…,PN)。对每个 k∈[2,N],定义操作 k:依次令 i=1,2,…,k−1,若当前 Pi>Pi+1,就交换这两个相邻元素。
另给定长度为 M 的非降序列 A=(A1,A2,…,AM),其中 2≤Ai≤N。对每个 i=1,2,…,M,求依次执行操作 A1,A2,…,Ai 后排列 P 的逆序对数。序列 x 的逆序对是满足 1≤p<q≤∣x∣ 且 xp>xq 的下标对 (p,q)。
输入格式
N
P_1 P_2 ... P_N
M
A_1 A_2 ... A_M
输出格式
输出 M 行,第 i 行表示执行前 i 个操作后的逆序对数。
样例输入 1
6
3 2 4 1 6 5
2
4 6
样例输出 1
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
样例输出 2
117
116
113
110
108
105
103
99
94
87
79
72
65
58
51
数据范围
- 2≤N≤2×105;
- 1≤M≤2×105;
- P 是 (1,2,…,N) 的排列;
- 2≤Ai≤N,且 Ai≤Ai+1。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
8 |
N≤150,且 M≤150 |
| 2 |
18 |
N≤3000,且 M≤3000 |
| 3 |
22 |
N≤5000 |
| 4 |
24 |
M≤50 |
| 5 |
28 |
无特殊限制 |