Duality

시간 제한0.2초메모리 제한1024 MB

요약
평면 위의 점 N개가 주어질 때, 각 점을 새 점 하나와 이어 만든 N개의 선분이 서로 교차하지 않도록 새 점 N개를 정해 출력한다.
난이도

보통10점 중 7점

유형
기하, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

22차원 평면 위에 주어진 NN개의 점 각각을 한 끝점으로 하고, 주어지지 않은 점을 다른 끝점으로 하는 선분을 NN개 만들어 서로 교차하지 않게 해 보자. 2N2N개의 점은 모두 정수 좌표의 점이며, 서로 같은 좌표에 있으면 안 된다.

어떤 선분의 끝점이 다른 선분 위에 있거나, 두 선분이 끝점에서 만나면 교차하는 경우로 본다.

입력

총 TT개의 테스트 케이스가 입력으로 주어지며, 첫째 줄에 TT가 주어진다. (1≤T≤1,000)(1 \le T \le 1\\,000)

테스트 케이스의 첫째 줄에 NN이 주어진다. (1≤N≤100)(1 \le N \le 100)

테스트 케이스의 둘째 줄부터 NN개의 점이 주어진다. 그중 ii번째 줄에는 ii번 점의 좌표 정수 x_ix\_i, y_iy\_i가 공백으로 구분되어 주어진다. (−108≤x_i,y_i≤108)(-10^8 \le x\_i, y\_i \le 10^8)

주어지는 모든 점의 좌표는 서로 다르다.

입력으로 주어지는 점들을 이용해 선분 NN개를 서로 교차하지 않게 항상 만들 수 있음을 보장한다.

출력

각 테스트 케이스마다 NN개의 줄에 걸쳐 교차하지 않는 NN개의 선분을 출력한다.

그중 jj번째 줄에는 주어진 점의 번호 p_jp\_j와 주어지지 않은 점의 좌표 정수 x_jx\_j, y_jy\_j를 공백으로 구분하여 출력한다. 이는 주어진 p_jp\_j번 점과 (x_j,y_j)(x\_j, y\_j)의 점이 선분을 이루었다는 의미이다. 출력하는 p_jp\_j는 서로 달라야 한다. (1≤p_j≤N(1 \le p\_j \le N; −109≤x_j,y_j≤109)-10^9 \le x\_j, y\_j \le 10^9)

가능한 경우가 여럿인 경우는 그중 아무거나 하나를 출력한다.

예제1

  1. 예제 1

    입력
    1
    3
    0 0
    0 1
    1 0
    
    예상 출력
    1 -1 -1
    3 -1 1
    2 0 2