QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 512 MB Total points: 100

#854. 궁수 블라드

Statistics

블라드는 뛰어난 모험가로 알려진 모범생이었으며, 그의 많은 모험은 프로그래밍 대회의 문제로 남겨졌습니다. 하지만 그런 쉼 없는 삶은 블라드를 너무 지치게 했습니다. "어딜 가나 문제뿐이야! 이제 끝이야!" 그는 대학을 떠나 비에슈차디(Bieszczady) 산맥으로 향하기 직전에 이렇게 선언했습니다.

블라드는 작은 오두막을 빌려 휴가의 첫 몇 달을 보냈습니다. 하지만 곧 지루함이 그를 사로잡기 시작했고, 블라드는 취미를 찾기로 했습니다. 그는 활과 화살 몇 개를 사고 매일 양궁 연습을 시작했습니다. 몇 달간의 고된 훈련 끝에 블라드는 매우 만족스러운 결과를 얻었고, 초속 $C$ 미터라는 놀라운 속도로 화살을 쏠 수 있게 되었습니다. 하지만 주변에 아무도 없으니 그런 성취를 즐기기는 어려웠습니다.

"이것 좀 봐! 내가 바로 여기 서서 화살을 쏠 건데, 너무 빨라서 저 모든 나무들을 다 넘겨버릴 거야!" 블라드가 당신에게 외쳤습니다. 당신은 그를 방문하기로 한 젊은 프로그래머였습니다. 블라드는 활시위를 당기고 첫 번째 화살을 쏘았습니다. 화살의 깃이 공중에서 흔들리고 화살촉이 하늘에서 빛났지만... 화살은 나무에 맞았습니다. "잠깐만, 다시 해볼게!"

두 번째 시도는 첫 번째보다 더 장관이었습니다. 하지만 이 화살 역시 숲을 빠져나가지 못했습니다. "마지막으로 한 번만 더!" 블라드가 소리치며 다시 자루에 손을 뻗었습니다. 그때 당신이 그를 멈춰 세웠습니다. 블라드가 화살을 다 써버릴까 봐 두려워진 당신은 그가 조준해야 할 최적의 각도를 찾기로 했습니다. 그렇게 당신은 배낭에 있는 컴퓨터를 꺼내 UJ TCS 스타일로 이 문제를 해결할 준비를 했습니다.

블라드는 데카르트 평면의 $(0, 0)$ 지점에 서 있습니다. $(0, 1)$과 $(1, 0)$ 두 지점 모두 블라드로부터 정확히 1미터 떨어져 있습니다. $1$부터 $N$까지 번호가 매겨진 $N$개의 나무가 있으며, $i$번 나무는 $(x_i, 0)$과 $(x_i, y_i)$를 잇는 수직 선분으로 나타납니다(단, $x_i, y_i$는 양의 정수). 블라드가 각도 $\alpha$로 화살을 쏘면, 화살의 초기 수평 속도는 $v_x = C \cdot \cos(\alpha)$가 되고 초기 수직 속도는 $v_y = C \cdot \sin(\alpha)$가 됩니다. 화살은 공기 저항의 영향을 받지 않으며 그 궤적은 포물선입니다(정확히 말하면, 수평 속도 $v_x$는 비행 내내 일정하게 유지되고, 수직 속도 $v_y$는 초당 $g$만큼 선형적으로 감소합니다). $(0, 0)$ 지점을 포함하며, 중력 가속도는 $g = 10\,m/s^2$라고 가정합니다. 블라드가 쏜 화살의 궤적이 어떤 나무(더 구체적으로는 나무를 나타내는 선분)와도 교차하지 않으면 블라드의 목표는 달성됩니다. 또한, 화살의 궤적은 모든 나무의 $x$좌표보다 큰 지점에서 $x$축과 교차해야 합니다.

이 조건을 만족하는 $\tan(\alpha)$의 가능한 값을 출력하십시오.

입력

첫 번째 줄에는 테스트 케이스의 수 $z$가 주어집니다. 각 테스트 케이스에 대한 설명이 이어집니다.

각 케이스의 첫 번째 줄에는 블라드 화살의 속도를 나타내는 정수 $1 \le C \le 10^9$가 주어집니다.

각 케이스의 두 번째 줄에는 나무의 개수를 나타내는 정수 $1 \le N \le 100\,000$이 주어집니다.

각 케이스의 다음 $N$개 줄에는 두 정수 $x_i, y_i$ ($1 \le x_i, y_i \le 10^9$)가 주어집니다. $i$번째 나무는 $(x_i, 0)$과 $(x_i, y_i)$를 잇는 수직 선분으로 나타납니다.

모든 테스트 케이스에서 $N$의 합은 $300\,000$을 넘지 않습니다.

출력

각 케이스마다 소수점 아래 셋째 자리까지 정확하게 하나의 숫자를 출력하십시오. 이 값은 $10^{-3}$ 이하의 오차 범위 내에서 올바른 $\tan(\alpha)$ 값 중 하나를 근사해야 합니다. 항상 해가 존재하며, 올바른 $\tan(\alpha)$ 값은 길이가 최소 $10^{-2}$인 해의 구간에 포함되어 있다고 가정해도 좋습니다.

예제

입력 1

3
5
1
1 1
5
1
1 1
13
1
7 7

출력 1

2.000
3.000
2.429

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.