왕국 분할

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

요약
원들의 넓이를 적분해 각 왕국이 1/n 기준을 만족하는 x좌표를 구하고, 그 값이 가장 작은 왕국을 순서대로 배정하는 시뮬레이션 문제입니다.
난이도

보통10점 중 6점

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

문제

카리 왕국이 무너지고 다른 왕국 nn개가 그 영토를 나눈다. 왕국마다 값지게 여기는 땅이 다르다. 나파지는 정착할 너른 벌판을 원하고, 아시레마는 유전에만 관심이 있다.

각 왕국은 원하는 땅을 서로 겹치지 않는 원의 합집합으로 표시한다. 왕국 ii는 받은 땅이 자신이 표시한 넓이의 1/n1/n 이상을 담으면 만족한다.

의회는 yy축에 평행한 직선 n−1n-1개로 카리를 자른다. 땅은 세로 띠 nn개로 나뉘고, 띠 하나는 왕국 하나에 돌아간다. 의회는 다음 규칙에 따라 왼쪽에서 오른쪽으로 선을 긋는다.

마지막으로 그은 선의 위치를 xx라 하고, 첫 선을 긋기 전에는 xx를 음의 무한대로 둔다. 아직 띠를 받지 못한 왕국 ii마다, xx와 xix_i 사이의 띠가 왕국 ii가 표시한 넓이의 1/n1/n 이상을 담는 가장 작은 xi≥xx_i \ge x를 잡는다. 의회는 xix_i가 가장 작은 왕국에 그 띠를 주고 xix_i에 선을 그은 다음, 남은 왕국을 두고 같은 과정을 반복한다. 끝까지 남은 왕국은 마지막 선의 오른쪽을 모두 가진다.

xix_i가 가장 작은 왕국이 여럿이면 번호가 작은 왕국이 먼저 받는다. 차이가 10−910^{-9}보다 작은 두 위치는 같은 위치로 본다.

이 규칙은 언제나 왕국 nn개에 모두 띠를 나눠 주고, 모든 왕국이 만족한다. 왕국이 띠를 받는 순서를 출력한다.

입력

첫째 줄에 카리를 나누는 왕국의 수 nn (1≤n≤301 \le n \le 30)이 주어진다. 이어서 왕국 번호 순서대로 구역 nn개가 주어진다.

ii번째 구역의 첫째 줄에는 왕국 ii가 표시한 원의 개수 mim_i (1≤mi≤301 \le m_i \le 30)가 주어진다. 다음 mim_i개 줄에는 원 하나의 중심 좌표와 반지름을 나타내는 정수 xx, yy, rr (−1000≤x,y≤1000-1000 \le x, y \le 1000; 1≤r≤10001 \le r \le 1000)가 주어진다. 한 구역 안의 원은 서로 겹치지 않지만 접할 수는 있다. 서로 다른 왕국이 표시한 원은 어떻게 겹쳐도 된다.

출력

한 줄에 정수 nn개를 공백으로 구분해 출력한다. 왼쪽부터 차례로 띠를 받는 왕국의 번호이다.

힌트

그림은 첫 번째 입력에서 각 왕국이 표시한 원이다. 왕국 1은 1'과 1''이라고 적힌 원 두 개를, 왕국 2와 왕국 3은 모두 2와 3이라고 적힌 가운데 원을 골랐다. 점선은 땅을 공평하게 나누는 한 가지 방법이지만 의회가 긋는 선은 아니다. 의회는 yy축에 평행한 직선만 쓴다.

왕국 1이 표시한 넓이는 8π8\pi이고, 필요한 8π/38\pi/3은 왼쪽 원 안 x≈0.5299x \approx 0.5299에서 채워진다. 왕국 2와 왕국 3이 표시한 넓이는 각각 4π4\pi이고, 필요한 4π/34\pi/3은 x≈3.4701x \approx 3.4701에서 채워진다. 그래서 첫 띠는 왕국 1이 받는다. 이어서 왕국 2와 왕국 3의 위치가 같으므로 번호가 작은 왕국 2가 먼저 받고, 왕국 3은 두 번째 선의 오른쪽 전부, 곧 자기 원의 3분의 2를 받는다.

예제3

  1. 예제 1

    입력
    3
    2
    0 0 2
    7 0 2
    1
    4 0 2
    1
    4 0 2
    
    예상 출력
    1 2 3
    
  2. 예제 2

    입력
    1
    1
    0 0 5
    
    예상 출력
    1
    
  3. 예제 3

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