#5949. 牛车采矿

牛车采矿

题目背景

在《红色警戒》中,宝石矿是至关重要的资源。为了高效采集宝石,你需要指挥采矿车前往宝石矿区域。现在,让我们来计算采矿车到宝石矿的最短距离吧!

题目描述

红警的地图可以抽象为一个平面直角坐标系。地图上只有一片宝石矿,区域为一个四条边均与坐标轴平行的矩形。你有 nn 个采矿车,分别在 (xi,yi)(x_i, y_i) 点。你需要求出:

  1. 所有采矿车到宝石矿的距离(保留小数点后 9 位)。
  2. 距离最近的采矿车编号。如果有多个距离宝石矿最近的采矿车,则输出编号最小的那个。

采矿车到宝石矿的距离定义:采矿车所在的点与宝石矿矩形上所有点(包括四条边上的点和四个顶点)的欧几里得距离的最小值。

其中,点 (x1,y1)(x_1, y_1) 到点 (x2,y2)(x_2, y_2) 的欧几里得距离为:

(x1x2)2+(y1y2)2\sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}

输入格式

第一行包含一个整数 nn,表示采矿车的个数。

第二行包含四个整数 X1,Y1,X2,Y2X_1, Y_1, X_2, Y_2,其中 (X1,Y1)(X_1, Y_1) 表示宝石矿左下角的坐标,(X2,Y2)(X_2, Y_2) 表示宝石矿右上角的坐标。

接下来 nn 行,第 ii 行包含两个整数 xi,yix_i, y_i,表示编号为 ii 的采矿车的坐标为 (xi,yi)(x_i, y_i)。保证不会有采矿车在宝石矿的内部或边界上。

输出格式

输出一共两行。

第一行 nn 个整数,第 ii 个数表示编号为 ii 的采矿车到矿区的最短距离(保留小数点后 9 位)。

第二行一个整数,表示距离最近的采矿车编号。

样例 #1

样例输入 #1

4
-2 -4 1 -2
9 -7
6 2
-5 10
-9 -7

样例输出 #1

8.544003745 6.403124237 12.369316877 7.615773106 
2

数据范围与提示

对于 100%100\% 的数据,保证:

  • 1n1051 \le n \le 10^5
  • 100X1,X2,Y1,Y2,xi,yi100-100 \le X_1, X_2, Y_1, Y_2, x_i, y_i \le 100
  • X1X2X_1 \le X_2, Y1Y2Y_1 \le Y_2

特殊性质

  • A: X1=X2X_1 = X_2, Y1=Y2Y_1 = Y_2(宝石矿退化为一个点)
  • B: X1+1=X2X_1 + 1 = X_2, Y1+1=Y2Y_1 + 1 = Y_2(宝石矿为 1×11 \times 1 的正方形)
测试点编号 数据范围 特殊性质
121 \sim 2 n100n \le 100 A
343 \sim 4 无限制
565 \sim 6 n100n \le 100 B
787 \sim 8 无限制
99 n100n \le 100
1010 无限制