통신 가능 범위

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

요약
정수 좌표와 반지름을 가진 최대 100개의 기지국이 주어질 때, 선분 경로 중 하나 이상의 기지국 범위에 들어가는 구간의 비율을 소수점 둘째 자리까지 구한다.
난이도

보통10점 중 6점

유형
기하, 구간, 정렬, 구현
정답자
아직 제출이 없습니다

문제

휴대폰 사용자가 두 끝점의 좌표가 모두 정수인 직선 선분을 따라 이동한다. 어떤 지점에서 사용자가 통신 가능(coverage) 상태가 되려면, 그 지점이 적어도 하나의 송신탑의 전송 반경 안에 있어야 한다. 사용자가 경로를 따라 이동하는 동안, 어떤 송신탑의 반경 안으로 들어가거나 모든 송신탑의 반경 밖으로 나올 때마다 통신 가능 상태를 얻거나 잃을 수 있다.

최대 100100개의 송신탑의 위치와 전송 반경이 주어질 때, 경로 전체 길이 중 사용자가 통신 가능 상태인 구간의 비율(백분율)을 구하여라.

모든 (x,y)(x, y) 좌표는 [−100,100][-100, 100] 범위의 정수이며, 각 송신탑의 반경은 [1,100][1, 100] 범위의 정수이다.

입력

입력은 여러 개의 구성(configuration)으로 이루어지며, 각 구성은 한 줄에 다음과 같은 형식으로 주어진다:

N C0X C0Y C1X C1Y T1X T1Y T1R T2X T2Y T2R ...

여기서 NN은 송신탑의 개수, (C0X,C0Y)(C0X, C0Y)는 사용자 경로의 시작점, (C1X,C1Y)(C1X, C1Y)는 경로의 끝점이다. 각 송신탑 kk에 대해 (TkX,TkY)(TkX, TkY)는 그 위치, TkRTkR은 전송 반경이다. 모든 경로의 시작점과 끝점은 서로 다르다.

입력의 끝은 00 하나만 있는 줄로 표시된다:

0

출력

각 구성마다, 경로 중 통신 가능 상태인 부분의 비율(백분율)을 소수점 아래 둘째 자리까지 반올림하여 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3 0 0 100 0 0 0 10 5 0 10 15 0 10
    1 0 0 100 0 40 10 50
    0
    
    예상 출력
    25.00
    88.99