KNN算法
题目描述
K最邻近(KNN,K-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。
Orange最近迷上了KNN算法,他向你提出了如下问题:
在一维空间中有点集 S 包含 n 个点,请快速回答如下 q 次询问:
- 第 i 次查询给出点 pi 和整数 ki,要求输出 S 中与点 pi 距离第 ki 近的点和 pi的距离。
距离的定义:若点 ui 坐标为 xi,vi 坐标为 yi,则定义点 ui 与点 vi 的距离为 ∣xi−yi∣ 。
输入格式
第一行两个整数 n,q (1≤n,q≤2×105) 表示点集 S 的大小和查询次数。
第二行 n 个整数,第 i 个整数 ai (−109≤ai≤109) 描述点集 S 里第 i 个点的坐标。
保证对于 ∀i,j (1≤i<j≤n) 有 ai=aj 。
接下来 q 行, 第 i 行两个整数 xi,ki (−109≤xi≤109, 1≤ki≤n),表示 pi 的坐标和需要查询距离 pi 第 ki 近的结果。
输出格式
输出 q 行,第 i 行一个整数,表示第 i 次查询的答案。
样例 #1
样例输入 #1
5 3
10 -2 1 3 4
12 4
3 1
2 2
样例输出 #1
11
0
1