#P15595. [ICPC 2020 Jakarta R] Shopping Changes

[ICPC 2020 Jakarta R] Shopping Changes

说明

菲利克斯和他的 MM 个朋友今天正在疯狂购物。最近的一次现金交易中,他收到了由 NN 张钞票组成的找零。菲利克斯想把他收到的钞票按原顺序塞进自己的钱包。

例如,假设菲利克斯收到的找零有 N=4N = 4 张钞票,顺序为 C1 C2 C3 C4C_1\ C_2\ C_3\ C_4。假设菲利克斯钱包中已有 33 张钞票,顺序为 W1 W2 W3W_1\ W_2\ W_3,那么有四种方式将找零塞入他的钱包。

  1. 将找零塞在第 11 张钞票之前。塞入后,钱包中的钞票顺序为:C1 C2 C3 C4 W1 W2 W3C_1\ C_2\ C_3\ C_4\ W_1\ W_2\ W_3
  2. 将找零塞在第 11 张和第 22 张钞票之间。塞入后,钱包中的钞票顺序为:W1 C1 C2 C3 C4 W2 W3W_1\ C_1\ C_2\ C_3\ C_4\ W_2\ W_3
  3. 将找零塞在第 22 张和第 33 张钞票之间。塞入后,钱包中的钞票顺序为:W1 W2 C1 C2 C3 C4 W3W_1\ W_2\ C_1\ C_2\ C_3\ C_4\ W_3
  4. 将找零塞在第 33 张钞票之后。塞入后,钱包中的钞票顺序为:W1 W2 W3 C1 C2 C3 C4W_1\ W_2\ W_3\ C_1\ C_2\ C_3\ C_4

菲利克斯是个整洁的人,他希望钱包里的钞票尽可能有序。因此,他想以一种使得塞入后钱包的 逆序对数 最小的方式塞入找零。钱包的 逆序对数 定义为钱包中满足以下条件的钞票对 (x,y)(x, y) 的数量:

  • 钞票 xx 比钞票 yy 更靠近前端,且
  • 钞票 xx 的面值严格大于钞票 yy 的面值。

今天他感觉有点慷慨,不想自己留着找零,而是想把它送给其中一个朋友,并将找零塞入他们的钱包。第 ii 个朋友的钱包中有 LiL_i 张钞票,其面值从前到后依次为 Wi[1],Wi[2],,Wi[Li]W_i[1], W_i[2], \dots, W_i[L_i]。菲利克斯想把找零送给能使得塞入后其钱包逆序对数最小的朋友。因此,对于他的每个朋友,菲利克斯需要计算如果将找零塞入他们的钱包,所能得到的最小逆序对数。

输入格式

输入第一行包含两个整数 NNMM1N,M1000001 \leq N, M \leq 100\,000),分别表示找零中钞票的数量和菲利克斯的朋友数量。接下来一行包含 NN 个整数 CiC_i1Ci1091 \leq C_i \leq 10^9),表示找零中每张钞票的面值。接下来 MM 行,每行以一个整数 LiL_i1Li2000001 \leq L_i \leq 200\,000)开头,表示第 ii 个朋友钱包中钞票的数量,后面跟着 LiL_i 个整数 Wi[j]W_i[j]1Wi[j]1091 \leq W_i[j] \leq 10^9),表示钱包中钞票的面值。所有 LiL_i 之和不超过 200000200\,000

输出格式

对于每个朋友,按照输入顺序,输出一行一个整数,表示如果将找零塞入他们的钱包,所能得到的最小逆序对数。

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 解释

对于第 11 个朋友,将找零塞在第 33 张和第 44 张钞票之间,钱包中的钞票顺序为:2 3 4 5 6 7 8 9 102\ 3\ 4\ 5\ 6\ 7\ 8\ 9\ 10。因此,钱包的逆序对数为 00

对于第 22 个朋友,将找零塞在第 11 张钞票之前,钱包中的钞票顺序为:5 6 7 100 995\ 6\ 7\ 100\ 99。因此,钱包的逆序对数为 11。无法得到更小的逆序对数。

对于第 33 个朋友,将找零塞在第 11 张和第 22 张钞票之间,或第 22 张和第 33 张钞票之间,钱包的逆序对数为 11。无法得到更小的逆序对数。

翻译由 DeepSeek 完成