编程题
### 问题描述 小蓝是一位宇宙探险家。他发明了一对智能机器人,它们能够分析宇宙中各种稀有矿石的属性。 为了进一步检验机器人的能力,小蓝决定进行一项实验。 首先,小蓝会将 $n$ 颗矿石样本在桌上摆放成一排,每颗矿石都具有一个属性值 $a_i$。 接着,小蓝会给这对机器人分别输入一个数字 $X$。一旦机器人找到一颗属性值为 $X$ 的矿石,它就会立即拿起这颗矿石并返回给小蓝。如果找不到属性值为 $X$ 的矿石,机器人将空手而归。 小蓝可以在桌子的任意一端放置机器人,也就是说,他可以选择在桌子的左端放置两个机器人、在桌子的右端放置两个机器人,或者在左右两端各放置一个机器人。放置完后,机器人会同时开始工作,并按照从左往右或从右往左的顺序依次分析矿石样本的属性值。 机器人每分析一颗矿石需要 $1$ 分钟的时间。但机器人可以快速移动,因此移动的时间可以忽略不计。 小蓝想要知道,他需要等待多久才能从机器人那里得到两颗属性值不同,且和为 $K$ 的矿石。请帮助他计算出最短的等待时间(以分钟为单位)。 ### 输入格式 第一行包含两个整数 $n$($2\leq n\leq 2\times 10^5$) 和 $K$($2\leq K \leq 10^9$),分别表示矿石样本的数量和目标属性之和。 接下来的一行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 10^9$),表示每颗矿石的属性值。 ### 输出格式 输出一个整数,表示小蓝从机器人那里得到两颗属性之和为 $K$ 的矿石的最短等待时间(以分钟为单位)。如果无法得到两颗属性值之和为 $K$ 的矿石,则输出 $-1$。 ### 样例输入1 ```text 5 7 1 3 5 2 4 ``` ### 样例输出1 ```text 2 ``` ### 样例输入2 ```text 4 10 6 3 8 5 ``` ### 样例输出2 ```text -1 ``` ### 样例说明 在样例 $1$ 中,小蓝可以将两个机器人分别放置在矿石样本的两端,第一个机器人从左往右分析矿石,第二个机器人从右往左分析矿石。然后,分别向第一个机器人输入数字 $3$,第二个机器人输入数字 $4$。第一个机器人需要 $2$ 分钟找到特性值为 $3$ 的矿石,第二个机器人需要 $1$ 分钟找到特性值为 $4$ 的矿石,因此最短等待时间为 $2$ 分钟。 在样例 $2$ 中,无论小蓝如何放置机器人,都无法得到两颗属性值之和为 $10$ 的矿石,因此输出为 $-1$。
查看答案
赣ICP备20007335号-2