开始: 2026-03-16 00:00:00

25-26赛季联合赛03

结束: 2026-03-19 00:00:00
当前  2026-03-21 07:55:01  类型: IOI  状态: 已经结束 

P3. 拿钥匙
描述

n 个人和 k 把钥匙分布在一条直线上。每个人都想要到达位于同一条线上的办公室。为此,他需要先到某处获得一把钥匙,拿到钥匙后才能前往办公室。一把钥匙一旦被某个人拿走,其他人就不能再拿这把钥匙。

你的任务是确定让所有 n 个人都带着钥匙到达办公室所需的最短时间。假设每个人每秒能移动 1 单位距离。如果两个人同时到达一把钥匙,只能有一个人拿走钥匙。一个人可以从有钥匙的位置经过但不拿走钥匙。


输入

第一行包含三个整数 nkp1 \leq n \leq 1000n \leq k \leq 20001 \leq p \leq 10^9),表示人数、钥匙数和办公室的位置。

第二行包含 n 个两两不同的整数 a_1,a_2,...,a_n1 \leq a_i \leq 10^9),表示每个人的初始位置,顺序任意。

第三行包含 k 个两两不同的整数 b_1,b_2,...,b_k1 \leq b_j \leq 10^9),表示每把钥匙的位置,顺序任意。

注意,同一个点上不会有多个人或多把钥匙,但某个人和钥匙可以处于同一个位置。


输出

输出让所有 n 个人都带钥匙到达办公室所需的最短时间(单位:秒)。


样例

输入

2 4 50
20 100
60 10 40 80

输出

50

输入

1 2 10
11
15 7

输出

7
提示

在第一个样例中,位于 20 的人应选择拿 40 的钥匙,然后带着钥匙前往位于 50 的办公室,用时 30 秒。位于 100 的人可以拿 80 的钥匙再去办公室,用时 50 秒。因此,50 秒后所有人都到达了办公室并带着钥匙。


测试点1~6:n\leq k \leq 8;

测试点7~10:n=kleq 100;

测试点11~20:1 \leq n \leq 1000n \leq k \leq 20001 \leq p \leq 10^9


提交

题目参数
时间限制 1 秒
内存限制 128 MB
提交