Place for a Selfie
Contest: Codeforces Round 862 (Div. 2)
Difficulty rating: 1400
Tags: binary search, data structures, geometry, math

The universe is a coordinate plane. There are $$$n$$$ space highways, each of which is a straight line $$$y=kx$$$ passing through the origin $$$(0, 0)$$$. Also, there are $$$m$$$ asteroid belts on the plane, which we represent as open upwards parabolas, i. e. graphs of functions $$$y=ax^2+bx+c$$$, where $$$a > 0$$$.

You want to photograph each parabola. To do this, for each parabola you need to choose a line that does not intersect this parabola and does not touch it. You can select the same line for different parabolas. Please find such a line for each parabola, or determine that there is no such line.

Input format:
Each test contains multiple test cases. The first line contains the number of test cases $$$t$$$ ($$$1 \le t \le 10^4$$$). The description of the test cases follows.

The first line of each test case contains $$$2$$$ integers $$$n$$$ and $$$m$$$ ($$$1 \le n, m \le 10^5$$$) —the number of lines and parabolas, respectively.

Each of the next $$$n$$$ lines contains one integer $$$k$$$ ($$$|k| \le 10^8$$$), denoting a line that is described with the equation $$$y=kx$$$. The lines are not necessarily distinct, $$$k$$$ can be equal to $$$0$$$.

Each of the next $$$m$$$ lines contains $$$3$$$ integers $$$a$$$, $$$b$$$, and $$$c$$$ ($$$a, |b|, |c| \le 10^8$$$, $$$a > 0$$$) — coefficients of equations of the parabolas $$$ax^2+bx+c$$$. The parabolas are not necessarily distinct.

It is guaranteed that the sum $$$n$$$ over all test cases does not exceed $$$10^5$$$, and the sum $$$m$$$ over all test cases also does not exceed $$$10^5$$$.

Output format:
For each test case, output the answers for each parabola in the given order. If there is a line that does not intersect the given parabola and doesn't touch it, print on a separate line the word "YES", and then on a separate line the number $$$k$$$ — the coefficient of this line. If there are several answers, print any of them. If the line does not exist, print one word "NO".

You can output the answer in any case (upper or lower). For example, the strings "yEs", "yes", "Yes", and "YES" will be recognized as positive responses.

The empty lines in the output in the example are given only for illustration, you do not need to output them (but you can).

Constraints:
Time limit: 2.0 s
Memory limit: 256.0 MB

Note:
In the first test case, both parabolas do not intersect the only given line $$$y=1\cdot x$$$, so the answer is two numbers $$$1$$$.

In the second test case, the line $$$y=x$$$ and the parabola $$$2x^2+5x+1$$$ intersect, and also the line $$$y=4x$$$ and the parabola $$$x^2+2x+1$$$ touch, so these pairs do not satisfy the condition. So for the first parabola, the answer is $$$1$$$ ($$$y=1x$$$), and for the second parabola — $$$4$$$.

In the third test set, the line and the parabola intersect, so the answer is "NO".

Example input:
5
1 2
1
1 -1 2
1 -1 3
2 2
1
4
1 2 1
2 5 1
1 1
0
1 0 0
1 1
100000000
100000000 100000000 100000000
2 3
0
2
2 2 1
1 -2 1
1 -2 -1

Example output:
YES
1
YES
1

YES
1
YES
4

NO

YES
100000000

YES
0
NO
NO

Editorial:
Let's find the answers for the parabolas one at a time. Suppose we are given a parabola $$$ax^2+bx+c$$$ and a line $$$kx$$$. Then their difference is the parabola $$$ax^2+(b-k)x+c$$$. In order for the line and the parabola not to intersect, the difference must never equal $$$0$$$, that is, the parabola $$$ax^2+(b-k)x+c$$$ must have no roots. And this is true only when the discriminant is less than $$$0$$$, that is, $$$(b-k)^2<4ac$$$. In this case, $$$a, b$$$ and $$$c$$$ are given to us, and we need to choose $$$k$$$. $$$(b-k)^2<4ac \Longrightarrow |b - k| < \sqrt{4ac} \Longrightarrow b - \sqrt{4ac} < k < b+\sqrt{4ac}$$$.
Now let us have a list of straight line coefficients sorted in increasing order. We need to check if there is a coefficient that belongs to $$$[b - \sqrt{4ac}; b + \sqrt{4ac}]$$$. To do this, check the smallest number greater than $$$b$$$, and the largest number less than $$$b$$$. If one of these numbers satisfies the condition, then we have found the answer. If not, then there are definitely no suitable coefficients, because we took $$$2$$$ closest coefficients to the center of the segment.
Note that in this solution, we don't need to use non-integer numbers, which is good for both the time and the absence of errors due to precision.