#P14732. [Bulgarian2018春季赛]stores

    ID: 13948 传统题 3000ms 256MiB 尝试: 2 已通过: 1 难度: 7 上传者: 标签>CF2200计算几何构造排序分治扫描线图论

[Bulgarian2018春季赛]stores

题目描述

在森林中的一片空地上,蚂蚁家族建造了 2N2N 个小型地下仓库。其中一半储存植物性食物,另一半储存蛋白质。

蚂蚁在选择仓库位置时保证:任意三个仓库都不共线,这样更不容易被盗贼发现。

冬天快到了,需要在这些仓库之间挖掘地下通道,并封闭地面的入口。蚁后要求通道网络满足以下规则

  • 所有通道都在地下同一层,且必须是从一个仓库到另一个仓库的直线线段;除了端点仓库外,任意两条通道绝不能有其他公共点
  • 从任意一个仓库都必须能够到达任意另一个仓库,而且如果不允许回头走,那么到达路径必须是唯一的;
  • 沿着任意通道移动时,经过的仓库类型必须交替变化,也就是说,每次都必须从植物性食物仓库走到蛋白质仓库,或反过来。

你是一名蚂蚁建筑师。正当你沉浸于对几只蚜虫的“生产活动”时,主管把你叫来布置任务:

“前期工作都完成了:空地上已经建立了坐标系,每个仓库的坐标(均为整数)也都给出来了。现在只差确定哪些仓库之间要修建通道。”

你为了尽快回去继续享受甜食,匆匆画了一张示意图(图 1)。其中存放植物性食物的仓库记为 PiP_i,存放蛋白质的仓库记为 QiQ_i。但主管看完后很不满意,因为这张图存在很多问题:

  • Q0Q_0Q1Q_1 之间不应该有通道,因为它们都是蛋白质仓库,这违反了“仓库类型必须交替”的规则;
  • 例如仓库 P1P_1 无法从 P2P_2 到达,这不允许;
  • 例如 Q2Q_2 可以通过两条不同路径从 Q3Q_3 到达:Q3P3Q2Q_3P_3Q_2Q3P2Q2Q_3P_2Q_2,这同样违反规则;
  • 通道 P5Q5P_5Q_5P4Q2P_4Q_2 还有一个不是仓库的公共点,这也是禁止的。

看来事情没有那么简单。因此你决定编写程序 stores,来解决这一类问题。

图中给出一组不合法的通道方案,并标出上述几类违规情况:同类仓库直接相连、图不连通、存在两条不同简单路径、线段在非端点处相交。

输入格式

第一行输入一个正整数 NN

接下来 2N2N 行,每行两个非负整数,表示对应仓库的坐标。

  • NN 行给出储存植物性食物的仓库;
  • NN 行给出储存蛋白质的仓库。

在本题中,每个仓库还被赋予一个编号:它等于该仓库坐标所在输入行的行号减一,因此仓库编号从 112N2N

输出格式

如果在给定坐标下,不可能按照规则构造通道网络,则输出一行 -1

如果有解,则输出:

  • 11 行:通道数量 KK
  • 接下来的 KK 行:每行两个整数,表示你打算修建一条连接这两个仓库的通道。

输出的仓库编号都应在 112N2N 之间。

数据范围

  • 1N1500001 \le N \le 150000
  • 所有仓库坐标都是非负整数,且不超过 300000300000
  • 任意三个仓库不共线

样例

输入

6
6 5
3 3
5 2
7 2
9 5
9 1
5 8
2 4
6 3
8 0
10 4
8 7

输出

11
6 11
11 5
10 4
4 9
3 9
9 5
5 12
12 1
1 7
2 7
8 2

样例说明

原题样例还给出了如下“编号—图 2 中标记”的对应关系:

仓库编号 图 2 中的标记
1 P1
2 P2
3 P3
4 P4
5 P5
6 P6
7 Q1
8 Q2
9 Q3
10 Q4
11 Q5
12 Q6

样例中 12 个仓库的位置,以及样例输出对应的一组合法通道方案。