동굴 위기

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

요약
폭 w인 띠 모양 터널에서 원점에 있는 원판이 다각형 장애물과 겹치지 않고 오른쪽 출구까지 이동할 수 있는 최대 반지름을 구한다.
난이도

어려움10점 중 8점

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

문제

R2D2가 터널을 탐사하던 중 갑자기 낙반이 일어났습니다. R2D2는 갇혀 버린 걸까요?

그림 1: 동굴 위기 상황을 위에서 내려다본 모습.

위에서 내려다보면 모든 장애물(잔해 더미)을 2차원 좌표평면 위에서 볼 수 있습니다. 터널의 폭은 ww cm이며, 두 직선 y=w/2y = w/2와 y=−w/2y = -w/2로 둘러싸여 있습니다. R2D2는 원점 (0,0)(0, 0)에서 출발하며, 반지름이 rr인 완전한 원 모양의 바닥면을 가집니다. 터널의 출구는 직선 x=1000x = 1000의 오른쪽에 있습니다. R2D2와 출구 사이에는 여러 개의 다각형 장애물이 놓여 있습니다.

R2D2가 장애물들 사이를 지나 출구까지 도달할 수 있을까요?

입력

입력은 여러 개의 테스트 케이스로 이루어져 있습니다. 각 테스트 케이스의 첫 줄에는 터널의 폭을 나타내는 짝수 ww (2≤w≤10002 \le w \le 1000)와 장애물의 개수를 나타내는 정수 NN (0≤N≤1000 \le N \le 100)이 주어집니다. 이어지는 NN개의 줄에는 각각 하나의 장애물이 설명됩니다. ii번째 장애물은 단순 다각형이며, 한 줄에 꼭짓점의 개수 nin_i (3≤ni≤103 \le n_i \le 10)와 그 뒤로 nin_i개의 정수 쌍 xijx_{ij}, yijy_{ij} (0≤xij≤10000 \le x_{ij} \le 1000, −w/2≤yij≤w/2-w/2 \le y_{ij} \le w/2, j=1,…,nij = 1, \dots, n_i)가 반시계 방향 순서로 주어집니다.

장애물들은 서로 닿거나 겹칠 수 있지만, R2D2의 출발 위치는 어떤 장애물과도 닿거나 겹치지 않음이 보장됩니다. 각 다각형의 꼭짓점은 모두 서로 다르고, 인접하지 않은 두 변은 (끝점에서조차) 서로 교차하지 않으며, 모든 다각형의 넓이는 0이 아닙니다.

입력의 끝은 w=N=0w = N = 0인 줄로 표시되며, 이 줄은 처리하지 않습니다.

출력

각 테스트 케이스에 대해, R2D2가 출발점 (0,0)(0, 0)에서 터널 출구까지 어떤 장애물과도 겹치지 않는 경로를 계획할 수 있는 최대 반지름 r>0r > 0을 구하세요. 이 최대 반지름을 소수점 아래 둘째 자리까지 반올림하여 출력하고, 그러한 반지름이 존재하지 않으면 impossible을 출력하세요.

예제3

  1. 예제 1

    입력
    6 2
    4 2 -1 4 -1 4 1 2 1
    3 3 0 6 -1 6 1
    8 2
    3 1 -1 4 -1 4 4
    3 3 -4 6 1 3 1
    10 7
    4 0 5 4 2 5 3 4 5
    3 4 -5 9 -5 9 0
    4 8 -5 11 -5 11 -2 8 -2
    3 8 3 16 1 11 5
    4 21 -5 23 -3 20 -2 15 -4
    3 22 3 26 -1 28 0
    3 24 0 29 4 25 3
    0 0
    
    예상 출력
    1.00
    impossible
    1.33
    
  2. 예제 2

    입력
    6 0
    0 0
    
    예상 출력
    3.00
    
  3. 예제 3

    입력
    4 1
    4 5 -2 6 -2 6 2 5 2
    0 0
    
    예상 출력
    impossible