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

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

당구

시간 제한8초메모리 제한256 MB

요약
쿠션에 반사되며 10000만큼 이동하는 당구공이 정지한 공 중 어느 공에 먼저 부딪히는지 예측합니다.
난이도

보통10점 중 7점

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

문제

포켓이 없는 직사각형 당구대가 있다. 경기 면의 네 변은 모두 쿠션으로 막혀 있다.

초정밀 당구 로봇을 만들었다. 당구대에 공을 여러 개 올려놓으면 로봇이 그중 하나를 때린다. 맞은 공은 이동 거리의 합이 1000010000이 되는 순간 멈춘다.

공이 쿠션에 닿으면 거울에 반사되듯 진행 방향이 꺾인다. 모서리에 닿으면 들어온 길을 그대로 되돌아간다.

공의 반지름은 모두 rr이다. 두 공은 중심 사이의 거리가 2r2r일 때 서로 부딪히고, 맞은 공은 중심과 쿠션 사이의 거리가 rr일 때 쿠션에 반사된다. 나머지 공은 맞은 공이 닿을 때까지 처음 자리에 그대로 있다.

로봇이 때린 공에 가장 먼저 부딪히는 공이 무엇인지 예측하라.

입력

입력은 여러 개의 데이터 집합으로 이루어진다. 데이터 집합의 개수는 100100개보다 적다. 각 데이터 집합의 형식은 다음과 같다.

n
w h r vx vy
x1 y1
...
xn yn

첫 줄에는 당구대 위에 놓인 공의 개수 nn이 주어진다 (2≤n≤112 \le n \le 11). 다음 줄에는 정수 다섯 개 ww, hh, rr, vxv_x, vyv_y가 공백 하나로 구분되어 주어진다. ww와 hh는 경기 면의 너비와 길이이고 (4≤w,h≤10004 \le w, h \le 1000), rr는 공의 반지름이다 (1≤r≤1001 \le r \le 100). 로봇은 벡터 (vx,vy)(v_x, v_y) 방향으로 공을 때린다 (−10000≤vx,vy≤10000-10000 \le v_x, v_y \le 10000, (vx,vy)≠(0,0)(v_x, v_y) \ne (0, 0)).

이어지는 nn개의 줄에는 공의 위치가 주어진다. 각 줄은 공백 하나로 구분된 정수 두 개로 이루어지고, (xi,yi)(x_i, y_i)는 처음 상태에서 ii번째 공의 중심 좌표다 (r<xi<w−rr < x_i < w - r, r<yi<h−rr < y_i < h - r). (0,0)(0, 0)은 경기 면의 북서쪽 꼭짓점, (w,h)(w, h)는 남동쪽 꼭짓점이다. 처음 상태에서 공끼리 닿아 있거나 공이 쿠션에 닿아 있는 경우는 없다.

로봇은 항상 목록의 첫 번째 공을 때린다. 주어지는 값에 오차는 없다.

입력의 끝은 00 하나만 있는 줄로 나타낸다.

출력

각 데이터 집합마다 로봇이 때린 공에 가장 먼저 부딪히는 공의 번호를 한 줄에 하나씩 출력한다. 번호는 입력에 주어진 순서대로 11부터 세고, 로봇이 때린 공이 11번이다. 맞은 공이 멈출 때까지 어떤 공에도 부딪히지 않으면 -1을 출력한다.

두 개 이상의 공이 맞은 공과 동시에 가장 먼저 부딪히는 경우는 없다. 또한 rr를 10−910^{-9}보다 작은 값만큼 바꾸어도 가장 먼저 부딪히는 공과 부딪히는 방식은 달라지지 않는다.

예제2

  1. 예제 1

    입력
    3
    26 16 1 8 4
    10 6
    9 2
    9 10
    3
    71 363 4 8 0
    52 238
    25 33
    59 288
    0
    
    예상 출력
    3
    -1
    
  2. 예제 2

    입력
    3
    10 10 1 1 1
    2 2
    8 2
    6 6
    0
    
    예상 출력
    3