CF1826F.Fading into Fog

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

This is an interactive problem.

There are nn distinct hidden points with real coordinates on a two-dimensional Euclidean plane. In one query, you can ask some line ax+by+c=0ax + by + c = 0 and get the projections of all nn 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 nn points and output them in some order. Here minimality means the minimum number of queries required to solve any possible test case with nn 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 AA to line ax+by+c=0ax + by + c = 0 is the point on the line closest to AA .

输入格式

The first line contains a single integer tt ( 1t501 \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 nn ( 2n252 \leq n \leq 25 ) — the number of hidden points.

For each test case, it is guaranteed that for any pair of hidden points, their xx coordinates differ by at least 11 . Analogously, yy coordinates of any pair also differ by at least 11 .

Coordinates xx and yy of all hidden points do not exceed 100100 by absolute value.

输出格式

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

As an answer to the query you will get nn points in the form "x_1 y_1 ... x_n y_n", where points (xi,yi)(x_i, y_i) are projections to the line ax+by+c=0ax + by + c = 0 . It is guaranteed that each printed point is no more than 10410^{-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 (xi,yi)(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 10310^{-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 tt ( 1t501 \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 nn ( 2n252 \leq n \leq 25 ). In the next nn lines output two rational numbers each. The numbers in line ii should correspond to xix_i and yiy_i respectively. Printed points must comply with all constraints from the input section.

输入输出样例

  • 输入#1

    1
    2
    
    1 1 2.5 1
    
    1.500000001 1.500000000 2 2

    输出#1

    ? 0 1 -1
    
    ? 0.2 -0.2 0
    
    ! 1 3 2.5 0.500000001

说明/提示

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

A picture, which describes the first query:

A picture, which describes the second query:

首页