#P16293. [Ucpc2021]Distance Optimizing Triangulation

[Ucpc2021]Distance Optimizing Triangulation

题目描述

Droopland 是一个具有 2N2N 个顶点的凸多边形王国。每个顶点上有一座房屋,按顺时针方向编号为 1,2,,2N1,2,\ldots,2N

多边形边界上的相邻房屋之间已经修建了双向道路:对于 1i<2N1\le i<2N,房屋 ii 与房屋 i+1i+1 相连,同时房屋 11 与房屋 2N2N 相连。

王国中有 NN 位居民,编号为 1,2,,N1,2,\ldots,N。每位居民恰好拥有两座房屋,并且每座房屋都有且仅有一位主人。设第 ii 位居民拥有的房屋编号为 xi,yix_i,y_i

你需要再修建恰好 2N32N-3双向道路,并满足:

  1. 每条道路是一条连接两座不同房屋的线段;
  2. 任意一对房屋之间至多有一条道路,包括原有边界道路;
  3. 任意两条道路除公共端点外不能相交。

Dist(a,b)\operatorname{Dist}(a,b) 为从房屋 aa 到房屋 bb 最少需要经过的道路条数。请构造道路,使

i=1NDist(xi,yi)\sum_{i=1}^{N}\operatorname{Dist}(x_i,y_i)

最小。

输入格式

第一行包含整数 NN

接下来 NN 行,第 ii 行包含两个整数 xi,yix_i,y_i,表示第 ii 位居民拥有的两座房屋。

数据范围:

2N200000,2\le N\le 200000, 1xi,yi2N.1\le x_i,y_i\le 2N.

所有 2N2N 个房屋编号在这些数对中各出现恰好一次。

输出格式

第一行输出最小的距离总和。

接下来输出 2N32N-3 行,每行两个整数 a,ba,b,表示新建一条连接房屋 aa 与房屋 bb 的道路。

若存在多种最优方案,输出任意一种即可。

样例

输入

3
1 3
2 5
6 4

输出

5
1 3
1 4
6 4

一种合法的最优道路布局如下:

在该方案中,Dist(1,3)=1\operatorname{Dist}(1,3)=1Dist(4,6)=1\operatorname{Dist}(4,6)=1Dist(2,5)=3\operatorname{Dist}(2,5)=3,总和为 55