#P15595. [ICPC 2020 Jakarta R] Shopping Changes
[ICPC 2020 Jakarta R] Shopping Changes
说明
菲利克斯和他的 个朋友今天正在疯狂购物。最近的一次现金交易中,他收到了由 张钞票组成的找零。菲利克斯想把他收到的钞票按原顺序塞进自己的钱包。
例如,假设菲利克斯收到的找零有 张钞票,顺序为 。假设菲利克斯钱包中已有 张钞票,顺序为 ,那么有四种方式将找零塞入他的钱包。
- 将找零塞在第 张钞票之前。塞入后,钱包中的钞票顺序为:。
- 将找零塞在第 张和第 张钞票之间。塞入后,钱包中的钞票顺序为:。
- 将找零塞在第 张和第 张钞票之间。塞入后,钱包中的钞票顺序为:。
- 将找零塞在第 张钞票之后。塞入后,钱包中的钞票顺序为:。
菲利克斯是个整洁的人,他希望钱包里的钞票尽可能有序。因此,他想以一种使得塞入后钱包的 逆序对数 最小的方式塞入找零。钱包的 逆序对数 定义为钱包中满足以下条件的钞票对 的数量:
- 钞票 比钞票 更靠近前端,且
- 钞票 的面值严格大于钞票 的面值。
今天他感觉有点慷慨,不想自己留着找零,而是想把它送给其中一个朋友,并将找零塞入他们的钱包。第 个朋友的钱包中有 张钞票,其面值从前到后依次为 。菲利克斯想把找零送给能使得塞入后其钱包逆序对数最小的朋友。因此,对于他的每个朋友,菲利克斯需要计算如果将找零塞入他们的钱包,所能得到的最小逆序对数。
输入格式
输入第一行包含两个整数 和 (),分别表示找零中钞票的数量和菲利克斯的朋友数量。接下来一行包含 个整数 (),表示找零中每张钞票的面值。接下来 行,每行以一个整数 ()开头,表示第 个朋友钱包中钞票的数量,后面跟着 个整数 (),表示钱包中钞票的面值。所有 之和不超过 。
输出格式
对于每个朋友,按照输入顺序,输出一行一个整数,表示如果将找零塞入他们的钱包,所能得到的最小逆序对数。
3 3
5 6 7
6 2 3 4 8 9 10
2 100 99
3 5 6 7
0
1
1
3 2
7 6 5
6 2 3 4 8 9 10
6 10 9 8 4 3 2
3
27
提示
样例 #1 解释
对于第 个朋友,将找零塞在第 张和第 张钞票之间,钱包中的钞票顺序为:。因此,钱包的逆序对数为 。
对于第 个朋友,将找零塞在第 张钞票之前,钱包中的钞票顺序为:。因此,钱包的逆序对数为 。无法得到更小的逆序对数。
对于第 个朋友,将找零塞在第 张和第 张钞票之间,或第 张和第 张钞票之间,钱包的逆序对数为 。无法得到更小的逆序对数。
翻译由 DeepSeek 完成
京公网安备 11011102002149号