#994. 解压游戏(game.cpp)

解压游戏(game.cpp)

Background

Special for beginners, ^_^

Description

小C被蛐蛐们的叫声烦的不行,于是玩起了解压小游戏......

游戏在一个无限长度的的数轴上进行,上面有n只蛐蛐和m个坑,它们都可以被抽象成数轴上的一个点。

玩家每回合需要选择让所有蛐蛐一起向左/向右跳一个单位长度。如果一个代表蛐蛐的点与一个代表坑的点重合了,蛐蛐就会掉进坑中,发出惨叫后死去。

郁闷的小C想用最快的时间杀死所有蛐蛐,请你帮小C计算一下这个最少的回合数。

Format

Input

第一行两个空格隔开的正整数 n, m。

第二行 n 个空格隔开的整数 x1, x2, . . . , xn,其中 xi 表示第 i 只蛐蛐初始时的坐标。

第三行 m 个空格隔开的整数 y1, y2, . . . , ym,其中 yi 表示第 i 个坑的坐标。

输入数据保证以上 n + m 个坐标两两互不相等

Output

仅一行一个整数,表示杀死所有蛐蛐的最少回合数。

Samples

3 2 
3 -1 2 
0 10
5

【样例1解释】

第一回合让所有蛐蛐向右跳一步,第 2 个蛐蛐进第一个坑,剩下两个蛐蛐分别位于 4, 3。

下面四回合让所有蛐蛐向左跳,两个蛐蛐都进入第一个坑,游戏结束。

Limitation

提示︰本题输入规模较大,请避免使用过慢的输入方式。

• 对于 10% 的数据,保证 m = 2;

• 对于另外 20% 的数据,保证 1 ≤ n ≤ 20, 1 ≤ m ≤ 300;

• 对于另外 20% 的数据,保证 1 ≤ n, m ≤ 300;

• 对于另外 20% 的数据,保证 1 ≤ xi , yi ≤ 2000;

• 对于另外 10% 的数据,保证 1 ≤ n, m ≤ 2000;

• 对于 100% 的数据,保证 1 ≤ n, m ≤ 2 × 10^5 , −10^9 ≤ xi , yi ≤ 10^9。