Это интерактивная задача.
Жюри загадало перестановку$$$^\dagger$$$ $$$p$$$ длины $$$n$$$.
В один запрос можно выбрать два целых числа $$$l$$$ и $$$r$$$ ($$$1 \le l < r \le n$$$), заплатив за это $$$(r - l)^2$$$ монет. В ответ вы получите количество инверсий$$$^\ddagger$$$ в подмассиве $$$[p_l, p_{l + 1}, \ldots p_r]$$$.
Найдите индекс максимального элемента в $$$p$$$, потратив не более $$$5 \cdot n^2$$$ монет.
Примечание: интерактор не является адаптивным: перестановка фиксируется до выполнения каких-либо запросов.
$$$^\dagger$$$ Перестановкой длины $$$n$$$ является массив, состоящий из $$$n$$$ различных целых чисел от $$$1$$$ до $$$n$$$ в произвольном порядке. Например, $$$[2,3,1,5,4]$$$ — перестановка, но $$$[1,2,2]$$$ не перестановка ($$$2$$$ встречается в массиве дважды) и $$$[1,3,4]$$$ тоже не перестановка ($$$n=3$$$, но в массиве встречается $$$4$$$).
$$$^\ddagger$$$ Количеством инверсий в массиве является количество пар индексов $$$(i,j)$$$ таких, что $$$i < j$$$ и $$$a_i > a_j$$$. Например, массив $$$[10,2,6,3]$$$ содержит $$$4$$$ инверсии: $$$(1,2),(1,3),(1,4)$$$ и $$$(3,4)$$$.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 100$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Единственная строка каждого набора входных данных содержит единственное целое число $$$n$$$ ($$$2 \le n \le 2000$$$) — длину скрытой перестановки $$$p$$$.
Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превышает $$$2000$$$.
Взаимодействие для каждого набора входных данных начинается с чтения целого числа $$$n$$$.
Для формирования запроса выведите «? l r» ($$$1 \le l < r \le n$$$) без кавычек. После этого вы должны прочитать одно единственное целое число — ответ на ваш запрос.
Если вместо ответа или допустимого значения $$$n$$$ вы получите целое число $$$-1$$$, то это означает, что ваша программа сделала некорректный запрос, превысила лимит запросов или дала неверный ответ на предыдущем наборе входных данных. При получении вердикта «Неправильный ответ» ваша программа должна немедленно завершиться. В противном случае можно получить произвольный вердикт, поскольку решение будет продолжать считывать данные из закрытого потока.
Когда вы будете готовы дать окончательный ответ, выведите «! i» ($$$1 \le i \le n$$$) без кавычек — индекс максимума загаданной перестановки. После решения одного набора входных данных программа должна сразу же переходить к следующему. После решения всех наборов входных данных программа должна быть немедленно завершена.
После вывода запроса не забудьте вывести перевод строки и сбросить буфер вывода. В противном случае вы получите вердикт Решение «зависло». Для сброса буфера используйте:
Взломы
Для взлома используйте следующий формат:
Первая строка содержит целое число $$$t$$$ ($$$1 \le t \le 100$$$) — количество наборов входных данных.
Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$2 \le n \le 2000$$$) — длина скрытой перестановки $$$p$$$.
Вторая строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$p_1,p_2,\ldots, p_n$$$ ($$$1 \le p_i \le n$$$), причем $$$p$$$ должно быть перестановкой.
Сумма $$$n$$$ по всем наборам входных данных не должна превышать $$$2000$$$.
2 4 1 0 2 1
? 1 3 ? 3 4 ! 4 ? 1 2 ! 1
В первом тесте взаимодействие происходит следующим образом:
Решение | Жюри | Объяснение |
2 | Имеется $$$2$$$ набора входных данных. | |
4 | В первом наборе входных данных загадана перестановка $$$[1,3,2,4]$$$ длины $$$4$$$. | |
? 1 3 | 1 | Решение запрашивает количество инверсий в подмассиве $$$[1,3,2]$$$, заплатив $$$4$$$ монеты, а жюри отвечает $$$1$$$. |
? 3 4 | 0 | Решение запрашивает количество инверсий в подмассиве $$$[2,4]$$$, заплатив $$$1$$$ монету, а жюри отвечает $$$0$$$. |
! 4 | Решение каким-то образом определило, что $$$p_4 = 4$$$, и выводит это. Поскольку ответ правильный, жюри переходит к следующему набору входных данных. | |
2 | Во втором наборе входных данных загадана перестановка $$$[2,1]$$$ длины $$$2$$$. | |
? 1 2 | 1 | Решение запрашивает количество инверсий в подмассиве $$$[2,1]$$$, заплатив $$$1$$$ монету, а жюри отвечает $$$1$$$. |
! 1 | Решение каким-то образом определило, что $$$p_1 = 2$$$, и выводит это. Поскольку ответ верен и наборов входных данных больше нет, жюри и решение завершаются. | |
Обратите внимание, что пустые строки во входных и выходных данных примера сделаны для наглядности и не встречаются в реальном взаимодействии.
Название |
---|