제즈볼 (Jezzball)
시간 제한1초메모리 제한128 MB
최대 열 개의 원자가 튕겨 다니는 경기장에서 고정된 점에서 수평 또는 수직 광선을 그을 때, 어떤 원자도 광선에 닿지 않는 가장 이른 시각을 구한다.
문제
제즈볼(JezzBall)은 직사각형 경기장 안에서 '원자'들이 튕겨 다니는 게임이다. 플레이어는 광선(벽)으로 공간을 막아 충분한 넓이를 가두면 다음 단계로 넘어간다. 이 문제에서는 좌표와 움직임이 모두 실수(연속)인 변형판을 다룬다. 단위는 픽셀이다.
경기장 크기는 1024 x 768 픽셀이다. 각 원자는 두께가 없는 점이다(공 모양이 아니다). 원자는 일정한 속력으로 움직이며, 경기장 경계(, , , )에 닿을 때만 에너지 손실 없이 튕겨 방향을 바꾼다. 원자끼리는 서로 부딪히지 않는다.
플레이어는 고정된 한 점에서 광선을 쏘아 경기장을 둘로 나눈다. 광선은 수평 또는 수직이며, 그 점에서 양쪽 방향으로 동시에(수직이면 위·아래, 수평이면 좌·우) 초당 200픽셀의 일정한 속력으로 양 끝이 각각 경기장 경계에 닿을 때까지 뻗어 나간다. 광선도 두께가 없다. 광선이 뻗는 동안 어떤 원자도 광선에 닿지 않으면 경기장이 성공적으로 나뉘고, 그렇지 않으면 목숨을 하나 잃는다.
다음 두 경우는 충돌로 세지 않는다: 원자가 뻗어 나가는 팔의 움직이는 끝점에 닿는 경우, 그리고 광선이 다 뻗은 바로 그 순간에 원자가 닿는 경우.
원자들의 초기 위치와 속도, 그리고 광선을 쏘는 고정된 점이 주어질 때, 광선(수평 또는 수직 중 안전한 쪽)이 완성되기 전에 어떤 원자와도 부딪히지 않도록 하려면 플레이어가 광선을 뻗기 시작할 때까지 기다려야 하는 최소 시간을 구하여라.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 원자의 개수 ()이 주어진다. 다음 줄에는 두 정수 , (, )가 주어지며, 이는 광선의 양 끝이 뻗어 나가기 시작하는 고정된 점이다. 이어지는 개의 줄에는 각각 네 정수 , , , (, , , )가 주어지며, 이는 원자의 초기 위치 와 속도(x축 방향 , y축 방향 )이다. 한 테스트 케이스 안의 모든 위치(광선을 쏘는 점과 원자들)는 서로 다르다. 입력은 인 줄로 끝나며, 이 줄은 처리하지 않는다. 테스트 케이스는 최대 25개이다.
출력
각 테스트 케이스마다 한 줄에, 플레이어가 수평 또는 수직 광선을 뻗기 시작해서 그리는 동안 어떤 원자와도 충돌하지 않게 되는 최소 시간을 소수점 아래 정확히 5자리까지 초 단위로 출력한다. 각 입력은 그러한 순간이 처음 나타나는 시점이 길이 초 이상인 열린 구간 안에 있도록 구성되어 있다. 처음 10000초 안에 그런 순간이 없으면 대신 Never를 출력한다.