Codeforces Global Round 13 |
---|
Закончено |
Это интерактивная задача.
Kochiya Sanae играет с магнитами. Когда она поняла, что некоторые из этих магнитов размагничены, ей стало любопытно их найти.
Есть $$$n$$$ магнитов, которые могут быть одного из следующих $$$3$$$ типов:
Обратите внимание, что вы не знаете типы этих магнитов заранее.
У вас есть устройство, которое может измерять силу между магнитами, и вы можете использовать его не более $$$n+\lfloor \log_2n\rfloor$$$ раз.
Вы можете поместить несколько магнитов в левую часть устройства, а несколько в правую, и запустить устройство. Очевидно, что каждый магнит можно поместить максимум в одну сторону (необязательно использовать все магниты). Вы можете использовать один и тот же магнит в нескольких запросах.
Тогда устройство покажет силу, которую эти магниты производят. Формально, пусть $$$n_1,s_1$$$ — число магнитов типов N и S соответственно в левой части и $$$n_2,s_2$$$ — в правой, тогда сила между ними будет равна $$$n_1n_2+s_1s_2-n_1s_2-n_2s_1$$$. Обратите внимание, что cила может быть как положительной, так и отрицательной (и нулем).
Однако, если абсолютное значение силы (модуль силы) будет строго больше $$$n$$$, машина развалится на части.
Вы должны найти все магниты типа - (все размагниченные), без поломки машины.
Заметьте, что интерактор не адаптивен. Типы магнитов фиксируются перед началом взаимодействия и не изменяются при запросах.
Гарантируется наличие не менее $$$2$$$ магнитов, тип которых не равен -, и по крайней мере $$$1$$$ магнита типа -.
В первой строке содержится одно целое число $$$t$$$ ($$$1 \leq t \leq 100$$$) — количество наборов входных данных.
Для каждого набора входных данных сначала следует читать целое число $$$n$$$ ($$$3 \leq n \leq 2000$$$) — число магнитов.
Гарантируется, что общая сумма всех $$$n$$$ по всем наборам входных данных не превышает $$$2000$$$.
После этого можно вставить несколько магнитов в машину и сделать запрос из условия.
Вы должны вывести каждый запрос в три строки:
После вывода запроса не забудьте вывести перевод строки и сбросить буфер вывода. В противном случае вы получите вердикт Решение «зависло». Для сброса буфера используйте:
После этого следует прочитать целое число $$$F$$$ —, силу, которую создают эти магниты.
Обратите внимание, что если ваш запрос недействителен (лимит запросов превышен, машина ломается, либо параметры не удовлетворяют ограничениям), интерактор немедленно прекратит работу. В этом случае завершите работу программы, чтобы получить вердикт Неправильный ответ вместо произвольного вердикта.
Если вы уверены в правильности ответа, воспользуйтесь следующим форматом, чтобы сообщить о нем:
Заметьте, что интерактор не адаптивен. Типы магнитов фиксируются перед началом взаимодействия и не изменяются при запросах.
Взломы
Чтобы взломать решение, используйте следующий формат:
Первая строка содержит единственное целое число $$$t$$$ ($$$1 \leq t \leq 100$$$) — количество наборов входных данных во взломе.
Каждый из следующих $$$t$$$ наборов входных данных должен быть выведен в двух строках:
1 4 0 1 0 0
? 1 1 3 4 ? 1 2 1 2 3 ? 1 1 1 4 ? 1 1 1 3 ! 2 3 4
Пустые строки в примере - только для вас, чтобы лучше понять процесс взаимодействия. Вы не обязаны их выводить.
В примере типы магнитов равны NN--.
Сначала вы ставите третий магнит слева, а четвертый — справа. Оба магнита имеют тип -, таким образом, никакой силы нет.
Затем вы помещаете первый магнит слева, а второй и третий — справа. Третий магнит имеет тип -, в то время как два других магнита имеют тип N, таким образом, произведенная сила составляет $$$1$$$.
В следующих двух запросах сила составляет $$$0$$$, так как справа находится только магнит типа -.
Затем мы можем определить, что магнитами типа - являются третий и четвертый, поэтому мы должны вывести «! 2 3 4» и завершить работу программы.
Название |
---|