#P14275. [ROI 2014 Day1] 对撞机 2.0

    ID: 16064 远端评测题 3000ms 256MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>计算几何2014Special JudgeROI(俄罗斯)

[ROI 2014 Day1] 对撞机 2.0

题目背景

译自 ROI 2014 Day1 T4. Коллайдер 2.0

题目描述

对撞机是一种用于研究基本粒子碰撞的装置。在其运行过程中,粒子被加速到极高速度。一个专门的探测器可以记录粒子的轨迹,这些轨迹在水平平面上表现为直线。

探测器的上方安装有一台超高速摄像机,其支架可以在水平平面上旋转。摄像机在任意时刻的方向由一条导向直线确定。摄像机可以拍摄任意矩形区域,并且该矩形的某一边必须与导向直线平行。

为了便于分析粒子可能发生的碰撞,要求每一张照片都必须包含截至拍摄时刻的所有轨迹交点。由于摄像机使用的耗材非常昂贵,因此每一张照片的面积必须尽可能小。

你的任务是:给定一系列按时间顺序发生的两类事件:

  • 新的粒子轨迹出现;
  • 摄像机按照指定导向直线拍摄一张照片;

对于每一张照片,求出包含所有轨迹交点的最小矩形区域的面积

输入格式

第一行包含一个整数 nn,表示事件总数(1n2000001 \leqslant n \leqslant 200\,000)。

接下来的 nn 行中,每行描述一个事件。

每个事件包含 5 个元素:

  • 第一个元素为 +,表示出现一条新的轨迹;或为 ?,表示摄像机拍摄一张照片。
  • 随后的 4 个元素为整数 x1x_1y1y_1x2x_2y2y_2,表示两个不重合的点的坐标($-10\,000 \leqslant x_1, y_1, x_2, y_2 \leqslant 10\,000$)。
  • 对于 + 事件,这两个点位于该粒子轨迹上,且所有轨迹两两不同。对于 ? 事件,这两个点位于摄像机的导向直线上。

输出格式

设共有 qq 次拍摄事件。

输出 qq 个实数,分别表示每一张照片最小可能的矩形区域面积,输出顺序与拍摄顺序一致。

如果输出的面积为 aa,标准答案为 bb,则当满足以下条件时,该测试点被认为正确:

abmax(1,b)104.\frac{|a - b|}{\max(1, b)} \leqslant 10^{-4}.
6
+ 0 0 0 1
+ 0 0 1 0
+ 1 0 0 2
? 0 0 0 1
+ 2 4 3 6
? 0 0 1 1
2.0
3.000
7
? 11 4 -7 8
+ -2 -2 1 1
? 0 0 0 1
+ 0 1 1 0
+ 0 2 2 0
? 0 0 0 1
? 0 0 1 1
0.0
0.0
0.25
0.0000000

提示

样例 1 解释

:::align{center} :::

样例 2 解释

:::align{center} :::

数据范围

测试共 5050 组,独立计分,每组 22 分。下表给出了部分测试的参数信息。

测试点 nn qq 备注
11 1010 11 引导直线平行于坐标轴
22 2020 1010
33 745745 365365
44 19971997 1010
55 20002000 10001000
66 100001100001 11
77 100002100002
88 200000200000
99 100000100000
1010 130000130000
1111 10001000 1010
1212 500500 250250
1313 1010010100 1000010000
1414 700700 100100
1515 800800 7171
1616 20012001 10001000
1717 50035003 20002000
1818 70057005 40004000
1919 80078007 10001000
2020 90099009 45004500
2121 9010090100 9000190001
2222 50005000 101101
2323 60006000 9898
2424 54325432 23452345
2525 95089508 40794079
2626 156002156002 151001151001 所有照片拍摄在所有粒子出现之后
2727 157004157004 152001152001
2828 197062197062 190001190001
2929 148008148008 141001141001
3030 169010169010 163501163501
3131 165011165011 159001159001
3232 185001185001 179102179102
3333 176001176001 168098168098
3434 155433155433 147234147234
3535 159608159608 152179152179
3636 165011165011 159001159001
3737 185001185001 179102179102
3838 176001176001 174000174000
3939 155433155433 153556153556
4040 159608159608 157701157701
4141 200000200000 11
4242 110000110000 1010
4343 120000120000 5050
4444 199999199999 7070
4545 188888188888 100100
4646 200000200000 100000100000
4747 199999199999 195000195000
4848 100000100000
4949 178689178689 9827698276
5050 199998199998 8888888888