순간이동 반딧불이 추격

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

요약
추격자가 각 반딧불 섬광을 향해 정해진 거리만큼 순간이동하고, 거리가 1 이하가 되면 잡히는 과정을 시뮬레이션한다.
난이도

쉬움10점 중 3점

유형
시뮬레이션, 기하, 구현, 수학
정답자
아직 제출이 없습니다

문제

놀라운 신종 곤충인 Lampyridae Teleportae(흔히 순간이동 반딧불이라고 부릅니다)가 발견되었습니다. 이 곤충은 날아다니는 대신 시공간을 뒤틀어 한 지점에서 다른 지점으로 순간이동합니다. 멈출 때마다 잠시 공중에 머무르며 짝을 찾기 위해 불빛을 반짝이므로, 관찰하기는 쉽지만 잡기는 매우 어렵습니다.

이 곤충을 잡기 위해 당신은 순간이동 운동화를 신습니다. 반딧불이가 반짝일 때마다 당신은 그것이 다시 순간이동하기 전에 정확히 한 번 순간이동할 수 있습니다(두 번은 불가능합니다). 운동화에는 플럭스 커패시터 성능에 따라 정해지는 최대 순간이동 거리가 있으므로, 한 번의 순간이동만으로는 반딧불이에게 닿지 못할 수도 있습니다.

추격은 야드 단위로 측정되는 2차원 평면에서 이루어집니다. 당신은 정수 좌표에서 시작하여 기다립니다. 반딧불이가 어떤 위치에서 반짝일 때마다, 당신은 그 불빛을 향해 직선으로 순간이동합니다. 최대 거리가 충분하여 불빛으로부터 1야드 이내에 도달할 수 있으면 반딧불이를 잡습니다. 그렇지 않으면 불빛을 향해 최대 거리만큼 순간이동한 뒤(따라서 첫 순간이동 이후에는 좌표가 정수가 아닐 수 있습니다) 다음 반짝임을 기다려 이 과정을 반복합니다.

반딧불이는 당신이 그것으로부터 1야드 이내로 접근할 때, 즉 당신과 불빛 사이의 유클리드 거리가 11 이하일 때 잡힙니다. 여러 시나리오에 대해 이 추격을 시뮬레이션하세요. 각 시나리오마다 반딧불이를 잡은 불빛 위치를 출력하거나, 끝내 잡지 못했음을 출력합니다.

입력

입력은 여러 개의 추격 시나리오로 이루어집니다.

각 시나리오의 첫 줄에는 공백으로 구분된 세 정수가 있습니다: 최대 순간이동 거리, 그리고 추격자의 시작 xx좌표와 yy좌표입니다. 최대 거리는 11 이상 10001000 이하의 정수이고, 시작 좌표는 00 이상 10001000 이하의 정수입니다.

이어지는 각 줄에는 공백으로 구분된 두 정수, 즉 반딧불이가 반짝인 위치의 xx좌표와 yy좌표가 나타난 순서대로 주어집니다. 모든 좌표는 00 이상 10001000 이하입니다. 두 좌표가 모두 −1-1인 줄은 반짝임 목록의 끝을 나타내며, 그 시점에 반딧불이는 영영 사라집니다. 목록이 끝나기 전에 반딧불이를 잡았다면, 해당 시나리오의 남은 반짝임들은 무시합니다.

다음 시나리오는 이전 시나리오의 종료 줄 바로 다음 줄에서 시작합니다. 최대 거리가 00인 시나리오는 입력의 끝을 나타내며 처리하지 않습니다.

출력

각 시나리오마다 정확히 한 줄을 출력합니다.

반딧불이를 잡았다면 Firefly N caught at (x,y)를 출력합니다. 여기서 N은 시나리오 번호(11부터 시작)이고 (x,y)는 반딧불이를 잡은 반짝임 위치입니다. 끝내 잡지 못했다면 Firefly N not caught를 출력합니다.

예제1

  1. 예제 1

    입력
    2 0 0
    3 3
    4 4
    5 5
    6 6
    7 7
    -1 -1
    2 0 0
    3 3
    5 5
    7 7
    -1 -1
    10 50 50
    50 62
    40 55
    30 55
    45 45
    50 50
    55 55
    50 50
    -1 -1
    0 0 0
    
    예상 출력
    Firefly 1 caught at (6,6)
    Firefly 2 not caught
    Firefly 3 caught at (50,50)