만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

연결된 삼각형

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

요약
3차원 공간의 점 여섯 개가 주어질 때, 두 삼각형으로 나눈 방법 중 서로 연결된 경우를 모두 찾습니다.
난이도

보통10점 중 6점

유형
기하, 완전 탐색, 구현
정답자
아직 제출이 없습니다

연결된 삼각형

삼각형 △ABC는 다음 조건 중 하나를 만족하면 삼각형 △DEF에 의해 연결되어 있다고 한다.

  1. △DEF의 변 중 정확히 하나가 △ABC의 내부를 지난다(△ABC와 같은 평면 위에서 본다, 아래 그림 참고). 또는
  2. △DEF의 꼭짓점 하나가 △ABC의 내부에 있고, 그 꼭짓점에 인접한 두 변이 △ABC가 놓인 평면의 서로 다른 쪽에 있다.

△ABC가 △DEF에 의해 연결되어 있으면, △DEF도 △ABC에 의해 연결되어 있다. 이때 두 삼각형은 서로 연결되어 있다고 한다.

3차원 공간의 점들이 일반 위치에 있다는 것은 어떤 네 점도 같은 평면에 있지 않다는 뜻이다(세 점이 같은 직선 위에 있지 않다는 뜻이기도 하다).

일반 위치에 있는 3차원 공간의 임의의 여섯 점은, 세 점씩 두 묶음으로 나누었을 때 각 묶음이 만드는 두 삼각형이 서로 연결되도록 나누는 방법이 적어도 하나 있다. 점들이 일반 위치에 있으면 네 점이 △ABC의 평면 위에 놓일 수 없으므로 위 2번 조건은 일어나지 않는다.

입력

입력은 여섯 줄이다. 각 줄에는 한 점의 좌표 x, y, z가 공백으로 구분된 배정밀도 실수로 주어진다. 점은 모두 여섯 개다.

−10≤x,y,z≤10-10 \le x, y, z \le 10

출력

첫 줄에는 찾은 연결된 삼각형 쌍의 개수 N을 10진 정수로 출력한다.

N은 그다음 N개의 줄로 이어진다. 각 줄에는 공백으로 구분된 10진 정수 m과 n을 출력한다. 이는 점 1, m, n을 한 삼각형으로, 나머지 점을 다른 삼각형으로 잡았을 때 연결된 쌍이 된다는 뜻이다. 각 줄에서 m < n이며, 줄은 사전순으로 정렬한다. 즉 m1 n1 줄이 m2 n2 줄보다 위에 있다면, m1 < m2이거나 m1 = m2이고 n1 < n2이다.

예제1

  1. 예제 1

    입력
    1 0 0
    -1 0 0
    0 1 0.2
    0 -1 0.2
    0.2 0.2 1
    0.2 0.2 -1
    
    예상 출력
    3
    2 3
    2 5
    3 4