QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 512 MB Total points: 100

#11151. 多边形

Statistics

在平面上画有 $n$ 条互不相交的线段,每条线段都平行于直角坐标系的一条坐标轴。我们希望构造一个边数不超过 $20n$ 且边平行于坐标轴的多边形,使得给定的 $n$ 条线段中的每一条都恰好是该多边形的一条边。

多边形的每两条相邻边必须互相垂直;多边形的边除了公共顶点外不能有其他公共点。输入中的每条线段都必须是多边形的一条边。给定线段的端点坐标均为整数,但多边形顶点的坐标可以是分数。

输入格式

第一行包含一个整数 $n$ ($1 \le n \le 100\,000$),表示线段的数量。

接下来的 $n$ 行描述这些线段:每行包含四个整数 $x_1, y_1, x_2, y_2$ ($-10^8 \le x_1, y_1, x_2, y_2 \le 10^8$),表示线段的两个端点坐标 $(x_1, y_1)$ 和 $(x_2, y_2)$。每条线段的长度均不为零,且要么是垂直的,要么是水平的。这些线段互不相交。

输出格式

如果无法构造出满足条件的多边形,则在输出的第一行打印单词 NIE。否则,在第一行打印一个整数 $m$ ($m \le 20n$),表示多边形的边数。在接下来的 $m$ 行中,按多边形周长上的顺序(方向任意)打印多边形的顶点:第 $i$ 行应包含两个数字 $x, y$ ($-10^9 \le x, y \le 10^9$),表示第 $i$ 个顶点的坐标为 $(x, y)$。每个数字必须以十进制形式给出,且小数点后最多包含七位数字。

注意:出于技术原因,程序输出的多边形描述不应超过 50 MB。如果超过此限制,可能会收到 OLE(输出超限)错误。

样例

输入 1

5
-1 1 -1 -1
0 0 0 -1
0 1 2 1
2 -1 2 0
0 2 -2 2

输出 1

22
-1 1
-1 -1
-0.6 -1
-0.6 0
-0.4 0
-0.4 -1
0 -1
0 0
1.4 0
1.4 -1
1.8 -1
1.8 0
2 0
2 -1
2.4 -1
2.4 2
2 2
2 1
0 1
0 2
-2 2
-2 1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.