A2446 「CCO 2021」换换排序

暂无评定 传统题 分块CCO(加拿大) 上传者
时间限制3000ms
内存限制1024MiB
通过 / 提交0/0

A2446「CCO 2021」换换排序

暂无评定 传统题 分块CCO(加拿大) 上传者
时间限制3000ms
内存限制1024MiB
通过 / 提交0/0

题目描述

译自 CCO 2021 Day1「Swap Swap Sort」

给定一个长度为 NN 的数组,其中各项均为 11 到 KK 内的整数。你的朋友有一个算法,他的算法可以把数组按照任何一种指定顺序排序。这个算法每次只交换数组中的一组相邻元素。它保证能在最小操作次数内完成排序。

所指定的顺序由一个目标排列给出。目标排列是一个 11 到 KK 的整数构成的排列,指定顺序就是说最终排序好的数组中数的出现顺序需要和目标排列一致。

例如,数组 [1 4 2 1 2] 按照目标排列 4,1,2,34, 1, 2, 3 的顺序排列就会得到数组 [4 1 1 2 2]。

你想知道给出一些不同的目标排列时,你朋友的算法将进行多少次交换操作。由此,你从一个形如 1,2,…,K1,2,\dots,K 的目标排列开始考虑,你接下来对其进行 QQ 次操作。每次操作会交换这个目标排列的两个相邻元素。每次操作完后,求出你朋友的算法对这个排列为目标的排序所需次数。这 QQ 次操作对目标排列的影响是累加的,但不影响要被排序的原数组。

输入格式

第一行三个整数 N,KN,K 和 QQ。

接下来一行 NN 个整数 a1,a2,…,aNa_1,a_2,\dots,a_N 表示要排序的数组。

接下来 QQ 行每行一个整数 jj,表示交换目标排列的第 jj 项和第 j+1j+1 项。

输出格式

输出 QQ 行每行一个整数,表示对应交换过后的排序算法交换次数。

5 4 3
1 4 2 1 2
3
2
1

4
2
2

目标排列分别是 1,2,4,31,2,4,3,然后是 1,4,2,31,4,2,3,然后是 4,1,2,34,1,2,3。对于最后一个目标排列,算法将 [1 4 2 1 2] 排序成 [4 1 1 2 2]。

数据范围与提示

对于 100%100\% 的数据,保证 1≤K≤N≤1051\le K\le N\le 10^5,1≤Q≤1061\le Q\le 10^6,1≤ai≤K1\le a_i\le K,1≤j≤K−11\le j\le K-1。

对于 12%12\% 的子任务,保证 N,Q≤5000N,Q\le 5000。

对于另外 12%12\% 的子任务,保证 Q≤100Q\le 100。

对于另外 20%20\% 的子任务,保证 K≤500K\le 500。