만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

하프 줄 길이

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

요약
원 위의 N개 점에 각각 줄 길이가 주어질 때, 두 점을 잇는 줄의 길이(두 점의 줄 길이와 현의 길이의 합) 중 가장 긴 K개를 구합니다.
난이도

보통10점 중 7점

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

문제

Lauren은 하프로 가능한 한 아름다운 음을 내려고 한다. 하프는 반지름이 RR 센티미터인 원이다. 음을 내려면 원둘레 위의 서로 다른 두 부착점을 잇도록 하프에 줄을 달아야 한다. 그다음 Lauren이 이 줄을 튕겨 음을 낸다.

원둘레에는 줄을 달 수 있는 부착점이 NN개 있다. ii번째 부착점은 원둘레의 가장 오른쪽 점에서 시계 방향으로 DiD_i나노도 떨어져 있다. 1나노도는 10−910^{-9}도이다.

부착점마다 줄을 고정하는 기술이 다르다. ii번째 부착점은 고정하는 데 LiL_i센티미터의 줄이 필요하다. 서로 다른 두 부착점 ii, jj 사이에 건 줄의 길이는 정확히 Li+Lj+d(i,j)L_i + L_j + d(i, j)센티미터이다. 여기서 d(i,j)d(i, j)는 두 점을 잇는 현의 길이, 즉 두 점 사이의 유클리드 거리이다.

Lauren은 줄이 길수록 음이 좋다고 생각한다. Lauren의 하프에서 쓸 수 있는 줄 중 가장 긴 KK개의 길이는 얼마인가?

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스의 첫 줄에는 세 정수 NN, RR, KK가 주어진다. 각각 부착점의 수, 하프의 반지름(센티미터), 구하려는 줄 길이의 개수이다. 이어서 NN개의 줄에 정수 DiD_i와 LiL_i가 주어진다. 각각 ii번째 부착점의 위치(시계 방향, 나노도 단위)와 그 부착점에 필요한 줄의 길이(센티미터)이다.

출력

각 테스트 케이스마다 Case #x: y1 y2 ... yK 형식으로 한 줄을 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yny_n은 가능한 줄 N×(N−1)/2N \times (N-1) / 2개의 길이를 내림차순으로 정렬했을 때의 nn번째 값이다. 각 yny_n은 정답과 절대 오차 또는 상대 오차가 10−910^{-9} 이내이면 맞은 것으로 본다.

제한

  • 1≤T≤1001 \le T \le 100.
  • N=150000N = 150000인 테스트 케이스는 최대 10개이다.
  • N≠150000N \ne 150000인 모든 테스트 케이스에서 5≤N≤1045 \le N \le 10^4이다.
  • 1≤R≤1091 \le R \le 10^9.
  • 0≤D10 \le D_1.
  • 모든 ii에 대해 Di<Di+1D_i < D_{i+1}.
  • DN<360×109D_N < 360 \times 10^9.

힌트

서로 다른 쌍의 점을 잇는 줄끼리 교차해도 된다. Lauren은 한 번에 음 하나만 내기 때문이다.

예제1

  1. 예제 1

    입력
    2
    5 2 1
    0 3
    1234567890 3
    3154510113 3
    180000000000 3
    359999999999 3
    5 10 1
    90000000000 8
    180000000000 7
    260000000000 9
    260000000001 1
    260000000002 1
    
    예상 출력
    Case #1: 10.0000000000
    Case #2: 36.9238939618