#P1203. KNN算法

KNN算法

KNN算法

题目描述

K最邻近(KNN,K-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。

Orange最近迷上了KNN算法,他向你提出了如下问题:

在一维空间中有点集 SS 包含 nn 个点,请快速回答如下 qq 次询问:

  • ii 次查询给出点 pip_i 和整数 kik_i,要求输出 SS 中与点 pip_i 距离第 kik_i 近的点和 pip_i距离

距离的定义:若点 uiu_i 坐标为 xix_iviv_i 坐标为 yiy_i,则定义点 uiu_i 与点 viv_i 的距离为 xiyi|x_i-y_i|

输入格式

第一行两个整数 n,qn,q (1n,q2×105)(1\le n, q \le 2 \times 10^5) 表示点集 SS 的大小和查询次数。

第二行 nn 个整数,第 ii 个整数 aia_i (109ai109)(-10^9 \le a_i \le 10^9) 描述点集 SS 里第 ii 个点的坐标。

保证对于 i,j\forall i, j (1i<jn)(1\le i \lt j \le n)aiaja_i \neq a_j

接下来 qq 行, 第 ii 行两个整数 xi,kix_i,k_i (109xi109, 1kin)(-10^9 \le x_i \le 10^9, \ 1\le k_i \le n),表示 pip_i 的坐标和需要查询距离 pip_ikik_i 近的结果。

输出格式

输出 qq 行,第 ii 行一个整数,表示第 ii 次查询的答案。

样例 #1

样例输入 #1

5 3
10 -2 1 3 4
12 4
3 1
2 2

样例输出 #1

11
0
1