CF830A Office Keys

题目描述

有 $n$ 个人和 $k$ 把钥匙分布在一条直线上。每个人都想要到达位于同一条线上的办公室。为此,他需要先到某处获得一把钥匙,拿到钥匙后才能前往办公室。一把钥匙一旦被某个人拿走,其他人就不能再拿这把钥匙。 你的任务是确定让所有 $n$ 个人都带着钥匙到达办公室所需的最短时间。假设每个人每秒能移动 $1$ 单位距离。如果两个人同时到达一把钥匙,只能有一个人拿走钥匙。一个人可以从有钥匙的位置经过但不拿走钥匙。

输入格式

第一行包含三个整数 $n$、$k$ 和 $p$($1 \leq n \leq 1000$,$n \leq k \leq 2000$,$1 \leq p \leq 10^9$),表示人数、钥匙数和办公室的位置。 第二行包含 $n$ 个两两不同的整数 $a_1,a_2,...,a_n$($1 \leq a_i \leq 10^9$),表示每个人的初始位置,顺序任意。 第三行包含 $k$ 个两两不同的整数 $b_1,b_2,...,b_k$($1 \leq b_j \leq 10^9$),表示每把钥匙的位置,顺序任意。 注意,同一个点上不会有多个人或多把钥匙,但某个人和钥匙可以处于同一个位置。

输出格式

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

说明/提示

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