Red and Blue

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

요약
N개의 점 사이에 빨간 선분과 파란 선분을 그려 각 색이 모든 점을 연결하고, 선분끼리 끝점이 아닌 곳에서 교차하지 않으며, 선분이 최대 2N-2개가 되도록 구성한다.
난이도

어려움10점 중 8점

유형
기하, 분할 정복, 재귀, 그리디
정답자
아직 제출이 없습니다

문제

좌표평면에 NN개의 점이 주어진다. ii번째 점의 좌표는 (x_i,y_i)(x\_i, y\_i)이다. 모든 점들은 위치가 서로 다르며, 한 직선 위에 세 점이 놓이게 되는 경우는 없다.

당신의 목표는 점들의 쌍들 중 일부를 빨간색, 또는 파란색 선분으로 연결하여 다음 조건들을 모두 만족하도록 하는 것이다.

  • 빨간색 선분만을 고려할 때, 모든 점들은 연결되어있다. 즉, 아무 서로다른 두 점을 잡아도 해당 두 점을 양 끝 점으로 가지는 빨간색 선분으로 이루어진 경로가 존재한다. 파란색 선분만을 고려할 때에도 성립한다.
  • 임의의 두 선분이 두 선분의 끝점을 제외한 곳에서 교점을 가지지 않는다.
  • 선분의 색상과 상관없이, 선분은 최대 2N−22N-2개까지 존재한다.

조건을 모두 만족하도록 선분을 그릴 수 있는지 판별하고, 만약 가능하다면 답을 출력하라.

입력

첫 줄에 점의 수 NN이 주어진다.

다음 NN개의 줄 중 ii번째 줄에는 두 정수 x_i,y_ix\_i, y\_i가 공백을 사이에 두고 주어진다.

출력

만약 조건을 모두 만족하도록 점들을 연결하는 것이 불가능하다면, 첫 줄에 -1을 출력한다.

그렇지 않을 경우, 답을 출력한다. 첫 줄에는 답에 사용된 선분의 개수 mm을 출력한다.

다음 mm개의 줄 중 ii번째 줄에는 두 정수 a_ia\_i와 b_ib\_i, 한 문자 c_ic\_i를 공백을 사이에 두고 출력한다. 이는 답에 사용된 ii번째 선분이 a_ia\_i번째, b_ib\_i번째 점을 끝점으로 하는 선분임을 의미하며, c_ic\_i가 R일 경우 빨간색, B일 경우 파란색임을 의미한다.

제한

  • 3≤N≤2,0003 \le N \le 2\\,000
  • 모든 1≤i≤N1 \le i \le N에 대하여 ∣x_i∣,∣y_i∣≤1,000,000,000|x\_i|, |y\_i| \le 1\\,000\\,000\\,000
  • 모든 1≤i\<j≤N1 \le i\<j \le N에 대하여 (x_i,y_i)≠(x_j,y_j)(x\_i, y\_i) \ne (x\_j, y\_j)
  • 주어진 NN개의 점 중 세 점이 한 직선 위에 놓이게 되는 경우는 없다.

예제3

  1. 예제 1

    입력
    4
    0 0
    5 5
    5 10
    10 0
    
    예상 출력
    6
    1 3 R
    1 4 R
    1 2 B
    4 3 B
    2 3 B
    2 4 R
    
  2. 예제 2

    입력
    5
    0 0
    3 7
    5 0
    5 2
    7 3
    
    예상 출력
    8
    1 5 R
    1 3 R
    1 4 B
    3 5 B
    4 5 B
    4 3 R
    1 2 R
    2 5 B
    
  3. 예제 3

    입력
    4
    -1000000000 -1000000000
    -1000000000 1000000000
    1000000000 -1000000000
    1000000000 1000000000
    
    예상 출력
    -1