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

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

위네시아의 섬

시간 제한5초메모리 제한512 MB

요약
두 원형 섬 사이에 입구가 테두리에서 100cm 이상 안쪽에 있는 가장 짧은 터널을 찾아, 섬들의 도달 가능 그래프가 강연결이 되도록 만든다.
난이도

어려움10점 중 8점

유형
그래프, 기하, 유니온 파인드, 이분 탐색
정답자
아직 제출이 없습니다

문제

위네시아는 평면 위에 흩어진 섬 무리다. 섬은 모두 완전한 원 모양이고 경계선도 땅이며, 어떤 두 섬도 겹치거나 맞닿지 않는다. 몇몇 섬에는 야자나무가 수직으로 자라고 있어서, 야자나무 하나를 평면 위의 한 점과 높이로 나타낸다.

배달부는 아무 땅 지점에서 다른 아무 땅 지점으로 물건을 옮길 수 있어야 한다. 같은 섬 안에서는 언제나 자유롭게 움직인다. 배달부는 자기가 서 있는 섬에서 높이 hh인 야자나무에 올라가 물건을 던질 수도 있다. 던진 물건은 그 야자나무에서 거리가 k×hk \times h 이하인 땅 지점이면 어디든, 다른 섬이라도 떨어뜨릴 수 있다. 던지려면 야자나무가 있어야 하므로 이 이동은 한쪽 방향으로만 쓴다.

던지기만으로는 모자랄 수 있으니 서로 다른 두 섬을 잇는 터널을 하나 뚫을 수 있다. 터널은 한 섬의 한 점과 다른 섬의 한 점을 잇고, 바다 밑도 사이에 놓인 섬 밑도 지나간다. 배달부는 터널을 양쪽 방향으로 오간다. 바닷물이 들어오지 않게 하려면 두 출입구가 각각 바다에서 1미터(100센티미터) 이상 떨어져야 하므로, 반지름이 rr인 섬의 출입구는 그 섬 중심에서 거리 r−100r - 100 이내에 놓인다. 터널의 길이는 두 출입구 사이의 거리다.

배달 체계가 완성되게 하는 가장 짧은 터널의 길이를 구하라.

입력

첫째 줄에 세 정수 nn, mm, kk가 주어진다 (1≤n≤50001 \le n \le 5000, 0≤m≤100000 \le m \le 10000, 1≤k≤10001 \le k \le 1000). 차례대로 섬의 수, 야자나무의 수, 던지는 거리와 야자나무 높이의 비율이다.

다음 nn개 줄에는 섬 하나의 중심과 반지름을 센티미터 단위로 나타내는 세 정수 xx, yy, rr가 주어진다 (∣x∣,∣y∣≤106|x|, |y| \le 10^6, 100≤r≤106100 \le r \le 10^6).

다음 mm개 줄에는 야자나무 하나의 위치와 높이를 센티미터 단위로 나타내는 세 정수 xx, yy, hh가 주어진다 (∣x∣,∣y∣≤106|x|, |y| \le 10^6, 1≤h≤1041 \le h \le 10^4).

어떤 두 섬도 교차하지 않는다. 야자나무는 모두 어느 한 섬의 내부에 엄격히 들어 있다. 같은 자리에 자란 야자나무는 없다.

출력

터널 없이도 배달 체계가 완성되면 0.000000을 출력한다. 터널을 하나 뚫어도 완성되지 않으면 impossible을 출력한다. 그 밖의 경우에는 가장 짧은 터널의 길이를 센티미터 단위로 출력한다.

수는 소수점 아래 여섯 자리로 출력한다.

예제3

  1. 예제 1

    입력
    3 2 3
    0 0 400
    1000 0 400
    2000 0 400
    300 0 150
    1300 0 150
    
    예상 출력
    1400.000000
    
  2. 예제 2

    입력
    3 2 2
    0 0 400
    1000 0 400
    2000 0 400
    300 0 100
    1300 0 100
    
    예상 출력
    impossible
    
  3. 예제 3

    입력
    1 0 1
    0 0 100
    
    예상 출력
    0.000000