#4009. 枪手(gunman)

枪手(gunman)

问题描述

有一个三维直角坐标系OXYZ,OX轴向右,OY轴向上,OZ轴向外。在坐标系中,有一些矩形的窗口。窗口所在的平面平行于OXY平面,边分别平行于OX轴和OY轴。每一个窗口被放置于坐标系的不同的深度(每个窗口的Z轴坐标不同,并且大于0)。

一个枪手拿着步枪在OX轴上移动(y=0,z=0)。他可以延一条直线射出一颗子弹。他的目标是射出一颗可以通过所有窗口的子弹。子弹擦过窗口边缘也是可以的。你的任务是求出怎么打出这样一颗子弹。

输入格式

输入文件的第一行包含一个整数n——坐标系中窗口的数量(不超过100)。

接下来n行,每一行包含5个整数x1iy1ix2iy2izix_{1i},y_{1i},x_{2i},y_{2i},z_i。这里(x1iy1izix_{1i},y_{1i},z_i)是窗口左下角的坐标,(x2iy2izix_{2i},y_{2i},z_i)是窗口右上角的坐标,窗口以z坐标排序(对于2inzizi12≤i≤n,z_i> z_{i-1})。

输出格式

如果枪手不能射出一颗通过所有窗口的子弹,那么输出“UNSOLVABLE”;

否则,第一行输出“SOLUTION”。接下来一行输出枪手射击的X轴坐标。接下来n行输出子弹穿过相应的窗口的位置。输出的所有坐标保留6位小数。

样例

3
1 3 5 5 3
1 2 5 7 5
5 2 7 6 6
SOLUTION
-1.000000
2.000000 3.000000 3.000000
4.000000 5.000000 5.000000
5.000000 6.000000 6.000000

数据范围

  • 0<x1iy1ix2iy2izi<10000<x_{1i},y_{1i},x_{2i},y_{2i},z_i<1000
  • x1ix2iy1iy2ix_{1i}<x_{2i},y_{1i}<y_{2i}

来源

  • 信息学奥赛之数学一本通
  • stong9070整理