#codefestivalchinac. [code_festival_china_c]Regular Polygon
[code_festival_china_c]Regular Polygon
问题
给定一个直角坐标系上的整数点阵,你想要从中选择一些点,用直线连接这些点以构成一个正多边形。此外,你希望尽可能选择更多的点来构成一个具有尽可能多顶点的正多边形。
请确定你应该选择哪些点以构成具有最多顶点的正多边形。如果存在多个可能的答案,你可以选择任意一个。
输入
输入数据按照下列格式给出。
:
- 第一行是一个整数,表示给定的整数点的数量。
- 接下来的行,每行包含一个整数点的坐标。第行()包含两个整数,表示第个整数点的和坐标。
- 每个给定的整数点都是不同的。换句话说,对于任意两个整数,如果,则。
输出
第一行输出一个整数,表示你选择的用于构成具有最多顶点的正多边形的点的数量。
接下来的行,按照升序输出你选择的每个点的索引(从1开始索引)。
如果无法从给定的点中构成任何正多边形,则只需输出一行包含一个整数。
输入示例 1
6
1 0
-1 0
0 1
0 -1
1 2
-1 2
输出示例 1
4
1
2
3
4
在给定的个点中,你可以选择个点来构成一个具有最多顶点的正方形。因此答案是以及这些点的索引。
点也可以构成一个正方形。所以它们的索引也被认为是正确的。
输入示例 2
4
0 0
1 0
2 0
3 0
输出示例 2
0
给定的点在一条直线上。你无法从这些点中构成任何正多边形。