#P16537. [THUPC 2026 决赛] 星图重绘

[THUPC 2026 决赛] 星图重绘

题目背景

来自 2026 清华大学学生程序设计竞赛暨高校邀请赛(THUPC2026)决赛。

题解等资源可在 https://github.com/dapingguo8/THUPC2026-final 查看。

随着流光解密挑战的圆满完成,全息光树被完全点亮,盛大的十周年庆典也悄然步入尾声。作为庆典的最后环节,小 T 和小 S 邀请大家来到了一块描绘着漫天星图的数字画板前。

岁月流转,过往绘就的星座连线已随着时间悄然淡化,此时的画板又回到了仅有孤立星辰散布的模样。小 S 递给现场的大家特制的星图笔,希望大家能重新补全这份星图。为了使重绘的纪念星图呈现出极致的美感,连结星辰时必须保持结构的平衡。

伴随着悠扬的旋律,大家纷纷上前,希望能在这片星海中点亮尽可能多的星座,为这场十周年纪念晚会留下最璀璨的收官之作。

题目描述

画板上共有 nn 颗星辰,可将其视为二维平面上的点。第 i (1in)i \ (1 \le i \le n) 颗星辰的坐标为 (xi,yi)(x_i, y_i)。已知所有星辰的横坐标两两不同,纵坐标也两两不同。

每次绘制星座时,你需要从这 nn 颗星辰中选取三颗,将它们两两连接构成一个三角形。为了体现平衡的美感,该三角形必须满足特定的边界要求:存在一个四条边均平行于坐标轴的矩形,使得该三角形的三个顶点恰好都落在这个矩形的边界上。同时,为了维持星图的清晰结构,所有连结出的三角形的内部区域(不包含顶点与边界)必须两两互不相交。

请你计算出最多能成功绘制多少个星座,并给出一组具体的绘制方案。

输入格式

本题包含多组测试数据。输入的第一行包含一个正整数 t (1t2×104)t\ (1\le t\le 2\times 10^4),表示数据的组数。

接下来的每组数据,第一行包含一个正整数 n (3n2×105)n \ (3 \le n \le 2 \times 10 ^ 5)

接下来 nn 行,第 i (1in)i \ (1 \le i \le n) 行包含两个整数 $x_i, y_i \ (\lvert x_i \rvert, \lvert y_i \rvert \le 10 ^ 9)$,表示第 ii 颗星辰的坐标。保证所有 xix_i 两两不同,所有 yiy_i 两两不同。

输出格式

对每组数据,第一行输出一个非负整数 mm,表示最多能绘制的星座数量。

接下来 mm 行,每行输出三个互不相同的正整数 x,y,z (1x,y,zn)x, y, z \ (1 \le x, y, z \le n),表示构成一个星座的三颗星辰。

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

提示

样例的第一组数据示意图如下:

:::align{center} :::

样例的第二组数据示意图如下:

:::align{center} :::