Codeforces Round 1004 (Div. 1) |
---|
Закончено |
Это интерактивная задача.
Вам дан массив $$$x_1, \ldots, x_n$$$ из чисел от $$$1$$$ до $$$n$$$. Также у жюри есть заранее фиксированный, но скрытый от вас массив $$$y_1, \ldots, y_n$$$ из чисел от $$$1$$$ до $$$n$$$. Элементы массива $$$y$$$ вам неизвестны. Дополнительно известно, что для всех $$$i$$$ выполнено $$$x_i \neq y_i$$$, а также все пары $$$(x_i, y_i)$$$ различны.
Жюри загадало один из двух объектов, вам нужно угадать, какой именно:
Чтобы отгадать, какой объект загадало жюри, вы можете делать запросы. В одном запросе вы должны задать два числа $$$i, j$$$ $$$(1 \leq i, j \leq n, i \neq j)$$$. В ответ вам будет возвращено одно число:
У вас есть $$$2$$$ запроса, чтобы определить, какой из объектов загадало жюри.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Взаимодействие начинается со считывания $$$n$$$ ($$$3 \leq n \leq 2 \cdot 10^5$$$) — длина массива $$$x$$$ и $$$y$$$, в начале каждого набора входных данных.
Далее, в следующей строке считайте $$$n$$$ целых чисел: $$$x_1, x_2, \ldots, x_n$$$ ($$$1 \leq x_i \leq n$$$) — элементы массива $$$x$$$.
Массив $$$y_1, y_2, \ldots, y_n$$$ фиксирован для каждого теста. Иными словами, интерактор не адаптивен.
Гарантируется, что $$$x_i \neq y_i$$$ для всех $$$1 \leq i \leq n$$$, а также все пары $$$(x_i, y_i)$$$ различны.
Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превышает $$$2 \cdot 10^5$$$.
Чтобы задать запрос, выведите «? $$$i$$$ $$$j$$$» (без кавычек, $$$1 \le i, j \le n, i \neq j$$$). Затем вы должны считать ответ на запрос, который является целым неотрицательным числом.
Чтобы дать ответ, выведите «! A», если загадан Объект A или «! B» если загадан Объект B (вывод без кавычек). Заметьте, что вывод ответа не считается одним из $$$2$$$ запросов.
После вывода каждого запроса не забудьте вывести перевод строки и сбросить буфер вывода$$$^{\text{∗}}$$$. В противном случае вы получите вердикт Решение «зависло». На любом шаге взаимодействия, если вы считали $$$-1$$$ вместо корректных данных, ваше решение должно немедленно завершиться. Это означает, что ваше решение получит вердикт Неправильный ответ из-за некорректного запроса или любой другой ошибки. Если программа не завершится, вы можете получить любой вердикт, так как ваша программа продолжит чтение из закрытого потока. Обратите внимание, что если запрос корректный, ответ на него никогда не будет равен $$$-1$$$.
Взломы
Первая строка должна содержать целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов входных данных.
Первая строка каждого набора входных данных должна содержать целое число $$$n$$$ ($$$3 \le n \le 2 \cdot 10^5$$$) — длину загаданного массива.
Вторая строка каждого набора должна содержать $$$n$$$ целых чисел — $$$x_1, x_2, \ldots, x_n$$$ ($$$1 \le x_i \le n$$$).
Третья строка каждого набора должна содержать $$$n$$$ целых чисел — $$$y_1, y_2, \ldots, y_n$$$ ($$$1 \le y_i \le n$$$).
Необходимо, чтобы $$$x_i \neq y_i$$$ для всех $$$1 \le i \le n$$$, а также все пары $$$(x_i, y_i)$$$ должны быть различны.
В четвёртой строке должен содержаться один символ: A или B, обозначающий, какой из объектов вы хотите загадать.
Сумма $$$n$$$ по всем наборам не должна превосходить $$$2 \cdot 10^5$$$.
$$$^{\text{∗}}$$$Чтобы сбросить буфер вывода, используйте:
2 3 2 2 3 1 0 5 5 1 4 2 3 4 4
? 2 3 ? 1 2 ! A ? 1 5 ? 5 1 ! B
В первом наборе входных данных $$$x = [2,2,3]$$$, $$$y = [1,3,1]$$$ и загадан Объект A.
Во втором наборе входных данных $$$x = [5,1,4,2,3]$$$, $$$y = [3,3,2,4,1]$$$ и загадан объект B.
Название |
---|