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

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

뚱뚱한 닌자

면접 대비

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

요약
N x N 정사각형 안의 점 센서들이 주어질 때, 센서에 닿지 않고 왼쪽에서 오른쪽으로 지나갈 수 있는 가장 큰 원의 지름을 구한다.
난이도

어려움10점 중 8점

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

문제

청부 살인 시장이 침체되면서 많은 닌자가 일자리를 잃고 집에서 햄버거를 먹으며 게임 쇼를 보게 되었다. 살이 찐 이들은, 전략적으로 설치된 레이저 센서를 하나도 건드리지 않고 닌자다운 은신술로 정사각형 홀을 가로지르는 사람에게 평생 햄버거를 제공하는 게임 쇼에 관심을 갖는다.

홀은 한 변이 NN미터인 정사각형 공간이다. 각 레이저는 천장에 설치되어 바닥의 센서를 향해 수직으로 빔을 쏜다. 빔의 폭은 00이며, 참가자가 센서에 닿으면 경보가 울린다. 참가자는 홀의 왼쪽에서 들어와 몸 전체로 홀을 가로질러 오른쪽을 완전히 통과해야 하며, 위쪽이나 아래쪽 벽을 절대 넘어서는 안 된다. 오른쪽 변에 닿기만 해서는 성공으로 인정되지 않는다.

진행자는 아주 뚱뚱한 닌자일수록 성공하기 어렵도록 센서를 배치하고 싶어 한다. 센서 배치가 주어졌을 때, 홀을 여전히 통과할 수 있는 가장 뚱뚱한 닌자의 둘레(지름)를 구하라. 위에서 볼 때 각 닌자는 완전한 원이며, 너무 무거워 바닥에서 뛰어오를 수 없다고 가정한다.

입력

입력은 여러 개의 게임 인스턴스로 이루어진다. 각 인스턴스는 공백으로 구분된 두 정수 NN과 LL이 있는 줄로 시작한다. NN은 홀 한 변의 길이(미터), LL은 설치된 레이저의 수이다 (1≤N,L≤10001 \le N, L \le 1000). 이어지는 LL개의 줄에는 각각 공백으로 구분된 두 정수 xx와 yy가 있으며, 이는 바닥에 있는 레이저 센서의 좌표이다 (0≤x,y≤N0 \le x, y \le N).

두 개의 00만 있는 줄은 입력의 끝을 의미하며, 처리하지 않는다.

출력

각 게임마다 한 줄에 실수 하나를 출력한다. 이는 레이저 센서를 하나도 건드리지 않고 홀을 통과할 수 있는 가장 뚱뚱한 닌자의 둘레(지름)이다. 지름은 소수점 셋째 자리까지 반올림하며, 필요하면 00으로 자리를 채운다.

양수 R.xxxyR.xxxy의 반올림 규칙: 넷째 소수 자리 yy가 55보다 작으면 결과는 R.xxxR.xxx이고, 그렇지 않으면 결과는 R.xxx+0.001R.xxx + 0.001이다. 예를 들어 10.346310.3463은 10.34610.346으로, 10.369510.3695는 10.37010.370으로 출력한다.

예제5

  1. 예제 1

    입력
    5 3
    1 1
    4 4
    1 4
    11 7
    1 1
    2 3
    3 5
    4 7
    6 5
    7 7
    8 9
    0 0
    
    예상 출력
    3.000
    2.828
    
  2. 예제 2

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

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

    입력
    10 2
    5 3
    5 7
    0 0
    
    예상 출력
    4.000
    
  5. 예제 5

    입력
    6 2
    3 2
    5 4
    0 0
    
    예상 출력
    2.828