CF1815B.Sum Graph

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

This is an interactive problem.

There is a hidden permutation p1,p2,,pnp_1, p_2, \dots, p_n .

Consider an undirected graph with nn nodes only with no edges. You can make two types of queries:

  1. Specify an integer xx satisfying 2x2n2 \le x \le 2n . For all integers ii ( 1in1 \le i \le n ) such that 1xin1 \le x-i \le n , an edge between node ii and node xix-i will be added.
  2. Query the number of edges in the shortest path between node pip_i and node pjp_j . As the answer to this question you will get the number of edges in the shortest path if such a path exists, or 1-1 if there is no such path.

Note that you can make both types of queries in any order.

Within 2n2n queries (including type 11 and type 22 ), guess two possible permutations, at least one of which is p1,p2,,pnp_1, p_2, \dots, p_n . You get accepted if at least one of the permutations is correct. You are allowed to guess the same permutation twice.

A permutation of length nn is an array consisting of nn distinct integers from 11 to nn in arbitrary order. For example, [2,3,1,5,4][2,3,1,5,4] is a permutation, but [1,2,2][1,2,2] is not a permutation ( 22 appears twice in the array), and [1,3,4][1,3,4] is also not a permutation ( n=3n=3 but there is 44 in the array).

输入格式

Each test contains multiple test cases. The first line contains a single integer tt ( 1t1001 \le t \le 100 ) — the number of test cases.

The first line of each test case contains a single integer nn ( 2n1032 \le n \le 10^3 ) — the length of the permutation.

It is guaranteed that the sum of nn over all test cases does not exceed 10310^3 .

输出格式

The interaction for each test case begins by reading the integer nn .

Then, make at most 2n2n queries:

  • If you want to make a type 11 query, output "+ x". xx must be an integer between 22 and 2n2n inclusive. After doing that read 11 or 2-2 . If you read 11 your query was valid, otherwise it was invalid or you exceed the limit of queries, and your program must terminate immediately to receive a Wrong Answer verdict.
  • If you want to make a type 22 query, output "? i j". ii and jj must be integers between 11 and nn inclusive. After that, read in a single integer rr ( 1rn-1 \le r \le n ) — the answer to your query. If you receive the integer 2−2 instead of an answer, it means your program has made an invalid query, or has exceeded the limit of queries. Your program must terminate immediately to receive a Wrong Answer verdict.

At any point of the interaction, if you want to guess two permutations, output "! p1,1p_{1,1} p1,2p_{1,2} \dots p1,np_{1,n} p2,1p_{2,1} p2,2p_{2,2} \dots p2,np_{2,n} ". Note that you should output the two permutations on the same line, and no exclamation mark is needed to separate the two permutations. After doing that read 11 or 2-2 . If you read 11 your answer was correct, otherwise it was incorrect and your program must terminate immediately to receive a Wrong Answer verdict. After that, move on to the next test case, or terminate the program if there are none. Note that reporting the answer does not count as a query.

Note that even if you output a correct permutation, the second permutation should be a permutation and not an arbitrary array.

At any point, if you continue interaction after reading in the integer 2-2 , you can get an arbitrary verdict because your solution will continue to read from a closed stream.

After printing a query or the answer do not forget to output the 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.

Interactor is non-adaptive. This means that all permutations are fixed before the interaction starts.

Hacks

To make a hack, use the following format.

The first line should contain a single integer tt ( 1t1001 \le t \le 100 ) — the number of test cases.

The first line of each test case should contain a single integer nn ( 2n1032 \le n \le 10^3 ) — the length of the permutation.

The second line of each test case should contain nn distinct integers p1,p2,,pnp_1, p_2, \ldots, p_n ( 1pin1 \le p_i \le n ) — the hidden permutation.

The sum of nn over all test cases should not exceed 10310^3 .

输入输出样例

  • 输入#1

    2
    6
    
    1
    
    1
    
    1
    
    1
    
    1
    
    2
    
    -1
    
    1
    2
    
    1

    输出#1

    + 12
    
    + 2
    
    + 3
    
    ? 1 3
    
    + 5
    
    ? 1 5
    
    ? 4 5
    
    ! 1 4 2 5 3 6 1 2 3 4 5 6
    
    
    ! 1 2 2 1

说明/提示

In the first test case, n=6n=6 and the hidden permutation p=[1,4,2,5,3,6]p = [1,4,2,5,3,6] .

Firstly, make a type 11 query on x=12,2,3x=12, 2, 3 respectively. This adds four edges to the graph in total:

  • An edge that connects node 66 and node 66 .
  • An edge that connects node 11 and node 11 .
  • An edge that connects node 11 and node 22 .
  • An edge that connects node 22 and node 11 .

Since all of these queries are valid, the interactor returns 11 after each of them.

Then, query the number of edges in the shortest path between node p1=1p_1 = 1 and p3=2p_3 = 2 , which is equal to 11 .

Then, make a type 11 query on x=5x=5 . This adds four edges to the graph in total:

  • An edge that connects node 11 and node 44 .
  • An edge that connects node 22 and node 33 .
  • An edge that connects node 33 and node 22 .
  • An edge that connects node 44 and node 11 .

Since this query is valid, the interactor returns 11 .

Then, query the number of edges in the shortest path between node p1=1p_1 = 1 and p5=3p_5 = 3 , which is equal to 22 .

Then, query the number of edges in the shortest path between node p4=5p_4 = 5 and p5=3p_5 = 3 . Such a path doesn't exist, therefore the interactor returns 1-1 .

Afterwards, due to some magic, two possible permutations that can be pp are determined: the first permutation is [1,4,2,5,3,6][1,4,2,5,3,6] and the second permutation is [1,2,3,4,5,6][1,2,3,4,5,6] . Since the first permutation is equal to the hidden permutation, this test case is solved correctly. In total, 77 queries are used, which is within the limit of 26=122 \cdot 6 = 12 queries.

Since the answer is correct, the interactor returns 11 .

In the second test case, n=2n=2 and the hidden permutation is p=[2,1]p = [2,1] .

Since there are only 2!=22! = 2 possible permutations, no queries are needed. It is sufficient to just output the two permutations, [1,2][1,2] and [2,1][2,1] . In total, 00 queries are used, which is within the limit of 22=42 \cdot 2 = 4 queries.

Since the answer is correct, the interactor returns 11 .

首页