점 연결

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

요약
정사각형 안에 일반 위치로 놓인 두 색의 점들이 주어질 때, 각 색마다 교차하지 않는 신장 트리를 만들어 출력한다.
난이도

어려움10점 중 8점

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

문제

"점 연결"은 혼자 하는 게임입니다. 2보다 큰 두 정수 gg와 rr을 정한 뒤, 정사각형 꼭짓점 네 곳에 점을 찍습니다. 위쪽 두 점은 초록, 아래쪽 두 점은 빨강입니다. 초록 점과 빨간 점을 정사각형 안에 더 놓되, 처음 네 점을 포함해 어떤 세 점도 한 직선 위에 있지 않게 합니다. 초록 점의 총 개수가 gg, 빨간 점의 총 개수가 rr이 될 때까지 반복합니다.

판이 준비되면 점들을 연결합니다. 다음 조건을 만족하면 같은 색의 두 점을 선분으로 이을 수 있습니다.

  • 연결할 두 점의 색이 같아야 합니다.
  • 두 점을 잇는 선분이, 끝점을 제외하고는 이미 그어진 다른 선분과 교차하지 않아야 합니다.

점 uu와 vv가 같은 연결 요소에 있다는 것은, 이미 그어진 선분만으로 uu에서 vv까지 이동할 수 있다는 뜻입니다.

초록 점 g−1g-1개의 선분으로 모든 초록 점을 하나의 연결 요소로 만들고, 빨간 점 r−1r-1개의 선분으로 모든 빨간 점을 또 다른 연결 요소로 만들면 승리합니다. 문제 조건대로 점을 배치했다면 항상 승리하는 방법이 존재함을 증명할 수 있습니다.

한 변의 길이가 ss인 정사각형 판에 초록 점 gg개, 빨간 점 rr개가 주어집니다. 좌표는 정수 쌍 (xi,yi)(x_i, y_i)입니다. 초록 점은 1부터 gg까지 번호가 매겨지며, (0,s)(0,s)의 왼쪽 위 점이 1, (s,s)(s,s)의 오른쪽 위 점이 2, 나머지 내부 점은 3부터 gg까지입니다. 빨간 점은 1부터 rr까지 번호가 매겨지며, (0,0)(0,0)의 왼쪽 아래 점이 1, (s,0)(s,0)의 오른쪽 아래 점이 2, 나머지 내부 점은 3부터 rr까지입니다.

그림은 모든 초록 점이 하나의 연결 요소로, 모든 빨간 점이 다른 연결 요소로 묶인 예입니다. 세 점이 한 직선 위에 있지 않고, 두 선분이 끝점에서만 만납니다.

초록 점 gg개와 빨간 점 rr개의 좌표가 주어질 때, 초록 선분 g−1g-1개와 빨간 선분 r−1r-1개를 그려 모든 초록 점을 하나로, 모든 빨간 점을 하나로 연결하고, 선분끼리 서로 교차하지 않게 하는 프로그램을 작성하세요.

입력

  • 1번째 줄: 정수 gg.
  • 다음 gg줄: 공백으로 구분된 두 정수 xi,yix_i, y_i. 1번부터 gg번까지 각 초록 점의 좌표.
  • (g+2)(g+2)번째 줄: 정수 rr.
  • 다음 rr줄: 공백으로 구분된 두 정수 xi,yix_i, y_i. 1번부터 rr번까지 각 빨간 점의 좌표.

출력

출력은 (g−1)+(r−1)(g-1)+(r-1)줄로, 그은 선분마다 한 줄씩 출력합니다.

각 줄에는 공백으로 구분된 정수 두 개와 문자 하나를 출력합니다. 두 정수는 선분으로 연결한 두 점의 번호이고, 문자는 초록이면 g, 빨강이면 r입니다.

선분을 출력하는 순서와, 각 선분에서 두 끝점을 적는 순서는 아무거나 됩니다.

제한

  • 3≤g≤50 0003 \le g \le 50\,000: 초록 점 개수.
  • 3≤r≤50 0003 \le r \le 50\,000: 빨간 점 개수.
  • 0<s≤200 000 0000 < s \le 200\,000\,000.

예제6

  1. 예제 1

    입력
    6
    0 1000
    1000 1000
    203 601
    449 212
    620 837
    708 537
    8
    0 0
    1000 0
    185 300
    314 888
    416 458
    614 622
    683 95
    838 400
    
    예상 출력
    1 2 g
    1 2 r
    1 3 g
    3 4 g
    1 7 r
    1 3 r
    2 5 r
    2 8 r
    8 6 r
    6 4 r
    2 5 g
    2 6 g
    
  2. 예제 2

    입력
    3
    0 1000
    1000 1000
    596 868
    5
    0 0
    1000 0
    200 931
    989 553
    947 368
    
    예상 출력
    1 2 g
    1 2 r
    2 5 r
    2 4 r
    5 3 r
    2 3 g
    
  3. 예제 3

    입력
    5
    0 1000
    1000 1000
    783 395
    661 481
    420 895
    6
    0 0
    1000 0
    203 201
    693 408
    993 58
    439 454
    
    예상 출력
    1 2 g
    1 2 r
    1 3 r
    1 6 r
    2 4 r
    2 3 g
    2 5 r
    1 4 g
    1 5 g
    
  4. 예제 4

    입력
    5
    0 1000
    1000 1000
    33 246
    993 759
    200 95
    6
    0 0
    1000 0
    580 970
    639 265
    581 529
    408 162
    
    예상 출력
    1 2 g
    1 2 r
    1 3 g
    3 5 g
    2 4 r
    2 6 r
    2 3 r
    2 4 g
    2 5 r
    
  5. 예제 5

    입력
    6
    0 1000
    1000 1000
    90 954
    416 913
    4 531
    96 699
    5
    0 0
    1000 0
    612 98
    341 138
    406 988
    
    예상 출력
    1 2 g
    1 2 r
    1 5 g
    2 3 r
    2 4 r
    1 6 g
    2 5 r
    1 3 g
    1 4 g
    
  6. 예제 6

    입력
    6
    0 1000
    1000 1000
    154 264
    865 307
    288 347
    719 482
    5
    0 0
    1000 0
    301 547
    815 547
    661 359
    
    예상 출력
    1 2 g
    1 2 r
    1 3 g
    2 3 r
    3 5 g
    2 5 r
    2 4 g
    5 4 r
    1 6 g