아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

왕국

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

요약
도로 건설로 도시들이 하나의 국가로 합쳐지며 주어진 위도의 수평선이 지나는 국가 수와 그 국가들에 속한 도시 수의 합을 구합니다.
난이도

어려움10점 중 8점

유형
유니온 파인드, 세그먼트 트리, 기하, 구간
정답자
아직 제출이 없습니다

문제

옛날 어느 왕국에 nn개의 도시가 있었다. 처음에는 모든 도시가 서로 떨어져 있었다. 시간이 지나면서 왕들은 도시를 잇는 길을 건설하도록 명령했고, 각 길은 두 도시를 잇는 직선 선분이다.

도시들은 길로 연결되어 있는지에 따라 서로소인 그룹으로 나뉜다. 길로 연결된 하나의 도시 그룹을 주(state)라고 부른다. 하나의 주는 몇 개의 도시와 그 도시들을 잇는 길들로 이루어진다.

역사 기록에는 길을 건설한 순서가 시간순으로 적혀 있다. 두 도시 AA와 BB를 잇는 길은 공유하는 끝점 도시를 제외하고는 다른 길과 절대 만나지 않는다. 길을 놓기 전에 AA와 BB는 같은 주에 속할 수도 있고 서로 다른 주에 속할 수도 있다. 길을 놓은 뒤에는 둘이 같은 주에 속하게 되므로, 필요하면 두 주가 하나로 합쳐진다.

역사학자 김 교수는 과거 어느 시점에 대해 다음 질문의 답을 알고 싶어 한다. 수평선(어떤 장소의 위도에 해당하는 가로선) 하나가 몇 개의 주를 지나는가? 아래 그림은 길이 놓인 한 가지 상태를 보여준다. 원은 도시이고 선분은 길이다. 여기에는 33개의 주가 있으며, 직선 y=4.5y = 4.5는 도시가 모두 88개인 두 주를 지나고, 직선 y=6.5y = 6.5는 도시가 55개인 한 주를 지난다.

다음 두 종류의 명령을 처리하는 프로그램을 작성하라.

  • road A B: 도시 AA와 BB 사이에 길을 건설한다. 이 길은 공유하는 끝점 도시를 제외하고 다른 길과 만나지 않는다. 이 명령은 왕국의 상태만 갱신하며, 프로그램은 아무것도 출력하지 않는다.
  • line C: 질의이다. 직선 y=Cy = C가 지나는 주의 개수와 그 주들에 속한 도시의 총 개수를 출력한다.

입력

입력은 표준 입력으로 주어진다. 첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스의 형식은 다음과 같다.

첫 줄에는 도시의 수 nn이 주어지며 1≤n≤100,0001 \le n \le 100{,}000이다. 이어지는 nn개의 줄에는 각각 두 정수 xx와 yy가 공백 하나로 구분되어 주어지고, 이는 한 도시의 좌표를 나타내며 0≤x,y≤1,000,0000 \le x, y \le 1{,}000{,}000이다. 도시는 주어진 순서대로 00번부터 n−1n-1번까지 번호가 매겨진다.

그다음 줄에는 명령의 수 mm이 주어지며 1≤m≤200,0001 \le m \le 200{,}000이다. 이어지는 mm개의 줄에는 각각 road A B 또는 line C 형태의 명령이 주어진다. 여기서 0≤A≠B<n0 \le A \ne B < n이고, CC는 0<C<1,000,0000 < C < 1{,}000{,}000이며 소수 부분이 항상 0.50.5인 실수이다. 같은 도시 쌍 사이에는 길이 최대 한 번만 건설되고, 각 테스트 케이스에는 질의가 적어도 하나 있다.

출력

출력은 표준 출력으로 한다. 모든 테스트 케이스를 통틀어 각 질의마다 정확히 한 줄을 출력한다. 그 줄에는 두 정수, 즉 직선이 지나는 주의 개수와 그 주들에 속한 도시의 총 개수를 출력한다.

예제3

  1. 예제 1

    입력
    3
    10
    1 7
    5 7
    8 6
    3 5
    5 5
    2 3
    10 3
    7 2
    4 1
    11 1
    11
    road 0 1
    road 3 5
    line 6.5
    road 4 2
    road 3 8
    road 4 7
    road 6 9
    road 4 1
    road 2 7
    line 4.5
    line 6.5
    1
    100 100
    1
    line 100.5
    2
    10 10
    20 20
    2
    road 0 1
    line 15.5
    
    예상 출력
    0 0
    2 8
    1 5
    0 0
    1 2
    
  2. 예제 2

    입력
    1
    2
    0 3
    5 7
    5
    line 5.5
    road 0 1
    line 5.5
    line 2.5
    line 7.5
    
    예상 출력
    0 0
    1 2
    0 0
    0 0
    
  3. 예제 3

    입력
    1
    7
    0 0
    0 10
    5 2
    5 8
    9 4
    9 4
    20 5
    6
    road 0 1
    road 2 3
    road 4 5
    line 5.5
    line 1.5
    line 9.5
    
    예상 출력
    2 4
    1 2
    1 2