AcWing 136. 邻值查找-springboot java语法部分
原题链接
中等
作者:
淋林炫
,
2024-04-22 14:13:10
,
所有人可见
,
阅读 8
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
String[] strs = br.readLine().split(" ");
int[] w = new int[n];
for (int i = 0; i < n; i ++)
w[i] = Integer.parseInt(strs[i]);
TreeMap<Integer, Integer> map = new TreeMap<>();
map.put(w[0], 0);
for (int i = 1; i < n; i ++){
Map.Entry<Integer, Integer> up = map.ceilingEntry(w[i]);
Map.Entry<Integer, Integer> down = map.floorEntry(w[i]);
int res = Integer.MAX_VALUE, pos = -1;
if (down != null){
res = w[i] - down.getKey();
pos = down.getValue();
}
if (up != null && up.getKey() - w[i] < res){
res = up.getKey() - w[i];
pos = up.getValue();
}
System.out.println(res + " " + (pos + 1));
map.put(w[i], i);
}
}
}