AT_arc018_3 [ARC018C] 席替え
题目描述
我所在的学校每个班级的人数特别多,甚至有多达 $1,000,000$ 人的班级。我的班级也不例外。教室的座位排成 $N$ 行 $M$ 列的矩形,共有 $N \times M$ 名学生,每人拥有一张自己的桌子。
学校非常重视防灾意识,如果发生意外,教室后面的墙壁可以打开,让学生从这里避难。最近,学校决定让成绩好的学生优先撤离,所以我们班决定重新安排座位,让成绩好的学生坐得更靠后。具体来说,把最前面的一行称为第 $0$ 行,最左边的一列称为第 $0$ 列。位于第 $i$ 行第 $j$ 列的座位用 $(i, j)$ 表示,坐在这个位置的学生成绩用 $G[i][j]$ 表示。对于任意两个座位 $(a, b)$ 和 $(c, d)$,如果 $a > c$,则无论 $b, d$ 的值如何,必须满足 $G[a][b] \geq G[c][d]$。
学生可以自由移动到任意座位,但是不能有两个或更多学生坐在同一座位,也不能有空位。同时,桌子数量不能改变,仍保持 $N$ 行 $M$ 列的布局。
重新安排座位是好事,但由于人数众多,我们希望尽量减少所有学生移动的总距离。这里的移动距离是指从原座位到新座位的曼哈顿距离,即如果一个学生从 $(a, b)$ 移动到 $(c, d)$,则移动距离为 $|a - c| + |b - d|$。
给定所有学生在重新安排前的成绩数据,请计算所有学生的最小移动距离总和。
### 输入格式
- 第一行包含两个整数 $N$ 和 $M$,分别表示教室的行数和列数($1 \le N, M \le 1,000$)。
- 第二行包含三个整数 $x_0$、$a$ 和 $p$,用来生成每位学生的初始成绩($0 \le x_0, a \le 10^9$,$N \times M \le p \le 10^9$,$p$ 必为素数)。初始成绩通过递归式 $x_i = (x_{i-1} + a) \mod p$ 生成。在位置 $(i, j)$ 的学生成绩为 $x_{i \times M + j}$。
### 输出格式
输出所有学生移动距离最小总和。最后包括一个换行符。
### 数据范围和提示
- $1 \le N, M \le 1,000$
- $0 \le x_0, a \le 10^9$
- $N \times M \le p \le 10^9$ 且 $p$ 为素数
### 示例
#### 输入
```
2 3
1 2 59
```
#### 输出
```
0
```
#### 解释
重新安排座位前,学生的成绩如下:
```
1 3 5
7 9 11
```
各座位在自己后面(屏幕下方)没有比自己成绩更差的学生,因此无需重新安排。
#### 输入
```
2 3
6 55 59
```
#### 输出
```
2
```
#### 解释
重新安排座位前,学生的成绩如下:
```
6 2 57
53 49 45
```
交换座位 $(0, 2)$ 和 $(1, 2)$ 的学生即可。两者分别移动 1 个单位,总移动距离为 2。
#### 输入
```
4 5
15 25 79
```
#### 输出
```
26
```
#### 解释
重新安排座位前,学生的成绩如下:
```
15 40 65 11 36
61 7 32 57 3
28 53 78 24 49
74 20 45 70 16
```
符合条件的重新安排如:
```
15 7 16 11 3
28 20 32 24 36
53 40 45 57 49
74 61 65 70 78
```
**本翻译由 AI 自动生成**
输入格式
无
输出格式
无