时空限制
1S/512M
题目描述
给你两个长度为 n 的序列 a1,a2,…,an 和 b1,b2,…,bn 以及一个正整数 m,保证 a,b 中所有元素都在 0 到 m−1 之间(包括边界),你可以对 a 进行任意多次操作(可能为 0 次),每次操作你可以选择下面 2 种类型中的任意一种:
- 选择两个整数 i,j 满足 1≤i<j≤n,交换 ai 和 aj,该类型的操作代价为 0。
- 选择一个整数 i 满足 1≤i≤n,使得 ai:=(ai+1)modm。具体地说,如果 ai=m−1,则让 ai:=0,否则让 ai:=ai+1,该类型的操作代价为 1。
你需要求出通过执行上述操作,使得操作后序列 a 变得与序列 b 相同的总操作代价的最小值,请你输出这个值。
可以证明,一定存在一种操作方案能使得 a 变得与 b 相同。
格式
输入格式
第一行包含两个整数 n,m,分别表示序列长度和操作的模数。
接下来一行包含 n 个整数 a1,a2,…,an,表示序列 a。
接下来一行包含 n 个整数 b1,b2,…,bn,表示序列 b。
输出格式
输出一行一个整数,表示通过执行上述操作,使得操作后序列 a 变得与序列 b 相同的总操作代价的最小值。
样例
样例输入 #1
3 5
4 3 1
1 0 2
样例输出 #1
5
样例解释 #1
下面是一种可行的操作方案:
执行类型 2 的操作,选择 i=1,操作后 a 变为 [0,3,1],代价为 1。
执行类型 1 的操作,选择 i=1,j=2,操作后 a 变为 [3,0,1],代价为 0。
执行类型 2 的操作,选择 i=3,操作后 a 变为 [3,0,2],代价为 1。
执行类型 2 的操作,选择 i=1,操作后 a 变为 [4,0,2],代价为 1。
执行类型 2 的操作,选择 i=1,操作后 a 变为 [0,0,2],代价为 1。
执行类型 2 的操作,选择 i=1,操作后 a 变为 [1,0,2],代价为 1。
该操作方案的总代价为 1+0+1+1+1+1=5,可以证明不存在总代价更小的操作方案。
样例输入 #2
5 7
1 5 3 2 5
4 4 6 1 6
样例输出 #2
5
数据规模
注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。
| 子任务编号 |
分数 |
n≤ |
m≤ |
| 1 |
10 |
10 |
109 |
| 2 |
30 |
5000 |
| 3 |
20 |
2×105 |
2 |
| 4 |
40 |
109 |
对于 100% 的数据:1≤n≤2×105,1<m≤109,0≤ai,bi<m。