题库练习 「IOI2019」折线 Part. 2
← 上一题 下一题 →

A5885 | 「IOI2019」折线 Part. 2

时间限制4s
内存限制1024MB
通过 / 提交0/0

题目描述

**此题负责评测原题的后 $3$ 个测试点。要评测前 $7$ 个测试点,请前往 [3178](https://loj.ac/problem/3178)。**

阿塞拜疆因地毯而闻名。作为一位地毯设计大师,你在做新设计时想画一条**折线**。一条折线是二维平面上包含 $t$ 条线段的线段序列,而这些线段由包含 $t+1$ 个点 $p_0, \cdots p_t$ 的点序列按照此规则构成:对所有的 $0 \le j \le t-1$,都有一条线段连接点 $p_j$ 和 $p_{j+1}$。

为完成这个新设计,你已经标出了二维平面中的 $n$ 个**小圆点**。小圆点 $i$($1 \le i \le n$)的坐标为 $(x[i], y[i])$。**不存在 $x$ 坐标或 $y$ 坐标相同的两个小圆点。**

现在你想要找到一个点序列 $(sx[0], sy[0]),(sx[1],sy[1]), \cdots, (sx[k], sy[k])$,由该点序列构成的折线需满足
- 该折线从 $(0, 0)$ 开始(即 $sx[0]=0$ 且 $sy[0] = 0$)。
- 该折线经过所有的小圆点(**它们不必是线段的端点**)。
- 该折线仅包括水平线段和竖直线段(对于构成该折线的连续两个点,其 $x$ 坐标或 $y$ 坐标相等)。

折线中的线段可以相交或重叠;换言之,平面上的每个点可以被任意数量的线段覆盖。

本题是一个有部分分的**提交答案型**题目。请从上方「附加文件」下载 $10$ 个输入文件,这些文件给出了小圆点的位置。对每个输入文件,你需要提交一个答案文件,描述满足要求的折线。你的得分将取决于折线中的**线段数量**(参见下面的计分方式一节)。

输入格式

第一行,一个整数 $n$,表示小圆点的数量。
第 $i+1$ 行($1 \le i \le n$),两个整数 $x[i], y[i]$,表示第 $i$ 个小圆点的坐标。

输出格式

第一行,一个整数 $k$,表示在折线中你使用的线段数量。
第 $j+1$ 行($1 \le j \le k$),两个整数 $sx[j], sy[j]$,表示你选取的点序列中第 $j$ 个点的坐标。

注意:
- 你**不需要**输出 $sx[0], sy[0]$;换言之,第 $2$ 行输出的是 $sx[1], sy[1]$。
- $sx[j], sy[j]$ 都必须为整数。
- $-2 \cdot 10^9 \le sx[j], sy[j] \le 2 \cdot 10^9$

输入输出样例

输入 #1
4
2 1
3 3
4 4
5 2
输出 #1
6
2 0
2 3
5 3
5 2
4 2
4 4
C++ 编辑器
输入
输出