Triangle Partition
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others)
Total Submission(s): 0 Accepted Submission(s): 0
Special Judge
Problem Description
Chiaki has 3n points p1,p2,…,p3n . It is guaranteed that no three points are collinear.
Chiaki would like to construct n disjoint triangles where each vertex comes from the 3n points.
Input
There are multiple test cases. The first line of input contains an integer T , indicating the number of test cases. For each test case:
The first line contains an integer n (1≤n≤1000 ) -- the number of triangle to construct.
Each of the next 3n lines contains two integers xi and yi (−109≤xi,yi≤109 ).
It is guaranteed that the sum of all n does not exceed 10000 .
Output
For each test case, output n lines contain three integers ai,bi,ci (1≤ai,bi,ci≤3n ) each denoting the indices of points the i -th triangle use. If there are multiple solutions, you can output any of them.
Sample Input
1
1
1 2
2 3
3 5
Sample Output
1 2 3
#include <iostream>
#include<algorithm>
using namespace std;
struct Node
{
int x;
int y;
int num;
}node[3010];
bool cmp(const Node &a,const Node &b)
{
return a.x<b.x;
}
int main()
{
int T,n;
int i;
int cnt=0;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=1;i<=3*n;i++)
{
scanf("%d%d",&node[i].x,&node[i].y);
node[i].num=i;
}
sort(node+1,node+3*n+1,cmp);
for(i=1;i<=3*n;i++)
{
if(i%3==0)
printf("%d",node[i].num);
else
printf("%d ",node[i].num);
if(i%3==0)
printf("\n");
}
}
return 0;
}
/*
2
2
1 2
2 3
3 5
1 4
7 8
6 0
*/