P15401 [NOISG 2026 Prelim] Airplane 2(暂无数据)

题目描述

在 NOI 2023 之后,猴子潘从兔子本森手中接管了一架飞机的控制权。飞机上的乘客座位排列成 $h$ 行 $w$ 列。行从上到下编号为 $1$ 到 $h$,列从左到右编号为 $1$ 到 $w$。我们将位于第 $i$ 行第 $j$ 列的座位记为 $(i, j)$。 CEO 潘向 $k$ 名乘客出售机票,乘客编号从 $1$ 到 $k$。第 $i$ 名乘客有一个偏好列 $c[i]$,但潘可以为他们分配任意行 $r[i]$。不能有两名乘客占据同一个座位。 为了保持飞机上的重量均匀分布,坐在较前行中的乘客不得坐在较后列中。形式化地说,对于任意两个已分配的座位 $(a_1, b_1)$ 和 $(a_2, b_2)$,如果 $a_1 < a_2$,则 $b_1 \le b_2$。 CEO 潘将 **乘客总满意度** 定义为所有已分配座位对之间的 **最小** 曼哈顿距离。一对座位 $(a_1, b_1)$ 和 $(a_2, b_2)$ 之间的曼哈顿距离为 $|a_1 - a_2| + |b_1 - b_2|$,其中 $|x|$ 表示 $x$ 的绝对值。 帮助潘确定在所有有效的行分配中可能得到的 **最大** 乘客总满意度,或者确定不存在有效的行分配。

输入格式

你的程序必须从标准输入中读取数据。 输入的第一行包含三个以空格分隔的整数 $h$、$w$ 和 $k$。 输入的第二行包含 $k$ 个以空格分隔的整数 $c[1], c[2], \ldots, c[k]$。

输出格式

你的程序必须输出到标准输出。 输出一个整数,即最大乘客总满意度。如果没有有效的行分配,则输出 $-1$。

说明/提示

#### 样例测试用例 1 解释 飞机有 $h = 5$ 行和 $w = 1$ 列。机上共有 $5 \times 1 = 5$ 个座位。因此,潘不可能为 $k = 6$ 名乘客分配互不相同的座位。 #### 样例测试用例 5 解释 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/7glajhfc.png) ::: 上图展示了一种能够最大化 **乘客总满意度** 的有效行分配方案。每个打叉的格子表示该座位被分配给了一名乘客。第一名乘客被分配到第 1 行,其余乘客被分配到第 4 行。 乘客 2(座位 $(4, 1)$)和乘客 5(座位 $(4, 3)$)之间的曼哈顿距离为 $|4 - 4| + |1 - 3| = 2$,这是所有乘客对中的最小值。因此,此分配的 **乘客总满意度** 为 2。 下图展示了一个 **无效** 行分配的示例。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/m6ge8jj8.png) ::: 尽管此分配中的 **乘客总满意度** 为 3,但乘客 3(座位 $(1, 11)$)和乘客 4(座位 $(3, 7)$)会导致重量分布不均匀,因为乘客 3 坐在比乘客 4 更前的行但更后的列。 #### 子任务 对于所有测试用例,输入均满足以下范围: - $1 \le h, w \le 10^9$ - $2 \le k \le 200\,000$ - 对于所有 $1 \le i \le k$,$1 \le c[i] \le w$ 你的程序将在满足以下限制的输入实例上进行测试: | 子任务 | 分值 | 附加约束 | |:------:|:----:|:--------:| | 0 | 0 | 样例测试用例 | | 1 | 5 | $w = 1$ | | 2 | 5 | 对于所有 $1 \le i \le k$,有 $c[i] = i$ | | 3 | 7 | $c$ 是一个等差数列,即对于所有 $2 \le i \le k-1$,有 $c[i+1] - c[i] = c[i] - c[i-1]$ | | 4 | 9 | $h, w, k \le 8$ | | 5 | 31 | $h, w, k \le 3000$ | | 6 | 16 | 对于所有 $1 \le i < j \le k$,有 $c[i] \ne c[j]$ | | 7 | 27 | 无额外约束 | 翻译由 DeepSeek 完成