Codeforces Round 870 (Div. 2)
F
Fading into Fog
Codeforces
2800
原题
← E→
翻译中…

This is an interactive problem.

翻译中…

There are $n$ distinct hidden points with real coordinates on a two-dimensional Euclidean plane. In one query, you can ask some line $ax + by + c = 0$ and get the projections of all $n$ points to this line in some order. The given projections are not exact, please read the interaction section for more clarity.

翻译中…

Using the minimum number of queries, guess all $n$ points and output them in some order. Here minimality means the minimum number of queries required to solve any possible test case with $n$ points.

翻译中…

The hidden points are fixed in advance and do not change throughout the interaction. In other words, the interactor is not adaptive.

翻译中…

A projection of point $A$ to line $ax + by + c = 0$ is the point on the line closest to $A$.

翻译中…

Input

翻译中…

The first line contains a single integer $t$ ($1 \leq t \leq 50$) — the number of test cases.

翻译中…

The description of the test cases follows.

翻译中…

The first line of each test case contains a single integer $n$ ($2 \leq n \leq 25$) — the number of hidden points.

翻译中…

For each test case, it is guaranteed that for any pair of hidden points, their $x$ coordinates differ by at least $1$. Analogously, $y$ coordinates of any pair also differ by at least $1$.

翻译中…

Coordinates $x$ and $y$ of all hidden points do not exceed $100$ by absolute value.

翻译中…

Interaction

翻译中…

To query a line $ax + by + c = 0$ you should print "? a b c" where all a, b and c are real numbers up to $100$ by absolute value. For less precision issues numbers $a$ and $b$ must satisfy the condition $|a| + |b| \geq 0.1$, where $|a|$ is the absolute value of $a$.

翻译中…

As an answer to the query you will get $n$ points in the form "x_1 y_1 ... x_n y_n", where points $(x_i, y_i)$ are projections to the line $ax + by + c = 0$. It is guaranteed that each printed point is no more than $10^{-4}$ away from the real projection point. Every coordinate is printed with at most 9 decimal places.

翻译中…

See the interaction example for more clarity.

翻译中…

If you ask too many queries, you will get Wrong answer.

翻译中…

To output an answer you should print "! x_1 y_1 ... x_n y_n", where $(x_i, y_i)$ are coordinates of the hidden points. You could output the hidden points in any order. The answer would be considered correct if each of the printed points is no more than $10^{-3}$ away from the corresponding hidden point. Printing the answer doesn't count as a query.

翻译中…

After printing a query or the answer, do not forget to output end of line and flush the output. Otherwise, you will get Idleness limit exceeded. To do this, use:

翻译中…
  • fflush(stdout) or cout.flush() in C++;
  • System.out.flush() in Java;
  • flush(output) in Pascal;
  • stdout.flush() in Python;
  • see the documentation for other languages
翻译中…

Hacks

翻译中…

To make a hack, use the following test format.

翻译中…

In the first line output a single integer $t$ ($1 \leq t \leq 50$) — the number of test cases.

翻译中…

The description of the test cases follows.

翻译中…

In the first line of each test case output a single integer $n$ ($2 \leq n \leq 25$). In the next $n$ lines output two rational numbers each. The numbers in line $i$ should correspond to $x_i$ and $y_i$ respectively. Printed points must comply with all constraints from the input section.

翻译中…

Note

翻译中…

In the sample the hidden points are $(1, 3)$ and $(2.5, 0.5)$

翻译中…

A picture, which describes the first query:

翻译中…

image

翻译中…

A picture, which describes the second query:

翻译中…

image

翻译中…

样例

Input #1
1
2

1 1 2.5 1

1.500000001 1.500000000 2 2
Output #1
? 0 1 -1

? 0.2 -0.2 0

! 1 3 2.5 0.500000001
InputCopy OutputCopy
题目信息
题号
1826F
时间限制
4 s
内存限制
256 MB
标签
计算几何
交互题
数学
概率论

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。