CF793C Mice problem

题目描述

分析员 Igor 在工作时睡着了,做了一个奇怪的梦。在梦中,他的桌子上挤满了电脑鼠标,所以他买了一个捕鼠器来抓这些鼠标。 桌子可以看作一个无限大的平面,捕鼠器是一个长方形,其边平行于坐标轴,对角线的两个顶点分别为 $ (x_{1},y_{1}) $ 和 $ (x_{2},y_{2}) $。 Igor 想要抓住所有的鼠标。他分析了鼠标的行为,发现每只鼠标都以恒定速度沿直线移动,第 $i$ 只鼠标的速度为 $ (v_{i}^{x},v_{i}^{y}) $,即任意 $1$ 秒内,其 $x$ 坐标增加 $v_{i}^{x}$ 单位,$y$ 坐标增加 $v_{i}^{y}$ 单位。最开始捕鼠器是开着的,所以鼠标可以自由地在桌上移动。Igor 可以在任意时刻关闭捕鼠器,关闭时能抓住所有严格处于捕鼠器内部的鼠标。 Igor 梦中也很忙,于是希望你编写一个程序:给出捕鼠器的坐标,每只鼠标的初始坐标和速度,判断他最早能在什么时候关闭捕鼠器,从而一次性抓住所有鼠标。注意,Igor 只能关一次捕鼠器。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 100000$),表示桌上有多少只电脑鼠标。 第二行包含四个整数 $x_{1}$、$y_{1}$、$x_{2}$ 和 $y_{2}$($0 \leq x_{1} \leq x_{2} \leq 100000$,$0 \leq y_{1} \leq y_{2} \leq 100000$),表示捕鼠器对角线两个顶点的坐标。 接下来的 $n$ 行,每行包含四个整数 $r_{i}^{x}, r_{i}^{y}, v_{i}^{x}, v_{i}^{y}$($0 \leq r_{i}^{x}, r_{i}^{y} \leq 100000$, $-100000 \leq v_{i}^{x}, v_{i}^{y} \leq 100000$),其中 $(r_{i}^{x}, r_{i}^{y})$ 表示第 $i$ 只鼠标的初始位置,$(v_{i}^{x}, v_{i}^{y})$ 表示它的速度。

输出格式

输出一个非负实数 $t$,表示 Igor 最早可以在第 $t$ 秒关上捕鼠器,使所有鼠标都严格处于捕鼠器内部。如果不存在这样的 $t$,输出 $-1$。 你的答案如果绝对误差或相对误差不超过 $10^{-6}$ 都将被认为是正确的。 形式化地讲,设你的答案为 $a$,标答为 $b$。若满足 $$ \frac{|a-b|}{\max(1, |b|)} \leq 10^{-6} $$ 则视为正确。

说明/提示

以下是第一个样例的图片: 点 $A, B, C, D$ 表示鼠标的初始位置,线段为它们的运动轨迹。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF793C/0c2fcb8709057e532ca0131544d2596c5ce57683.png) 第一次所有鼠标进入矩形的瞬间如下: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF793C/243afe4c229018b391d2ff30ae0186ebf1cbce8c.png) 以下是第二个样例的图片: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF793C/c8ca503e68f8ea8d507deb9be3b10b823dad4205.png) 点 $A, D, B$ 永远不会进入矩形。 由 ChatGPT 5 翻译