Codeforces Round 646 (Div. 2) |
---|
Закончено |
Это интерактивная задача.
Ayush устал запоминать пароль от своего замка и разработал новую схему для установки своего пароля. У замка есть $$$k$$$ позиций, где каждая позиция может содержать целые числа от $$$1$$$ до $$$n$$$. Пароль $$$P$$$ представляет собой последовательность из $$$k$$$ целых чисел, каждое из которых находится в диапазоне $$$[1, n]$$$, $$$i$$$-й элемент которой входит в $$$i$$$-ю позицию замка.
Чтобы установить пароль для своего замка, Ayush придумывает массив $$$A$$$ из $$$n$$$ целых чисел в диапазоне $$$[1, n]$$$ (не обязательно различных). Затем он выбирает $$$k$$$ непустых попарно непересекающихся подмножеств индексов $$$S_1, S_2, ..., S_k$$$ $$$(S_i \underset{i \neq j} \cap S_j = \emptyset)$$$ и устанавливает свой пароль как $$$P_i = \max\limits_{j \notin S_i} A[j]$$$. Другими словами, $$$i$$$-я позиция пароля равна максимуму по всем элементам $$$A$$$, индексы которых не принадлежат $$$S_i$$$.
Вам даны подмножества индексов, выбранных Ayush. Вам нужно угадать пароль. Чтобы сделать запрос, вы можете выбрать непустое подмножество индексов массива и узнать максимум по всем элементам массива с индексами в этом подмножестве. Вы можете задать не более 12 запросов.
В первой строке содержится одно целое число $$$t$$$ $$$(1 \leq t \leq 10)$$$ — количество наборов входных данных. Далее следуют описания наборов входных данных.
Первая строка каждого набора входных данных содержит два целых числа: $$$n$$$ и $$$k$$$ $$$(2 \leq n \leq 1000, 1 \leq k \leq n)$$$ — размер массива и количество подмножеств соответственно. Далее следуют $$$k$$$ строк. $$$i$$$-я строка содержит целое число $$$c$$$ $$$(1 \leq c \lt n)$$$ — размер подмножества $$$S_i$$$, за которым следуют $$$c$$$ попарно различных целых чисел в диапазоне $$$[1, n]$$$ — индексы, принадлежащие подмножеству $$$S_i$$$.
Гарантируется, что пересечение любых двух подмножеств пусто.
Чтобы задать запрос, выведите одну строку:
Для каждого запроса вы получите целое число $$$x$$$ — максимальное значение в массиве среди элементов с запрошенными индексами. Если подмножество запрашиваемых индексов недопустимо или вы превысили количество запросов (например, один из индексов больше, чем $$$n$$$), то вы получите $$$x = -1$$$. В этом случае вы должны немедленно прекратить программу.
Когда вы угадали пароль, выведите одну строку "!" (Без кавычек), за которой через пробел следуют $$$k$$$ целых чисел — позиции пароля.
Угадывание пароля не учитывается при подсчете количества запросов.
После этого вы должны прочитать строку. Если вы угадаете пароль правильно, вы получите строку "Correct". В этом случае вам следует продолжить решение оставшихся наборов входных данных. Если предполагаемый пароль неверен, вы получите строку "Incorrect". В этом случае вы должны немедленно прекратить программу.
Интерактор не адаптивный. Массив $$$A$$$ не изменяется с запросами.
После вывода запроса не забудьте вывести перевод строки и сбросить буфер вывода. В противном случае вы получите вердикт Решение «зависло». Для сброса буфера используйте:
Формат взломов
Чтобы взломать решение, используйте следующий формат взломов:
В первой строке должно содержаться одно целое число $$$t$$$ $$$(1 \leq t \leq 10)$$$ — количество наборов входных данных.
Первая строка каждого набора входных данных должна содержать два целых числа: $$$n$$$ и $$$k$$$ $$$(2 \leq n \leq 1000, 1 \leq k \leq n)$$$ — размер массива и количество подмножеств соответственно. Следующая строка должна состоять из $$$n$$$ целых чисел в диапазоне $$$[1, n]$$$ — массива $$$A$$$. Далее должны следовать $$$k$$$ строк. $$$i$$$-я строка должна содержать целое число $$$c$$$ $$$(1 \leq c \lt n)$$$ — размер подмножества $$$S_i$$$, за которым должны следовать $$$c$$$ различных целых чисел в диапазоне $$$[1, n]$$$ — индексы, принадлежащие подмножеству $$$S_i$$$.
Пересечение любых двух подмножеств должно быть пустым.
1 4 2 2 1 3 2 2 4 1 2 3 4 Correct
? 1 1 ? 1 2 ? 1 3 ? 1 4 ! 4 3
Массив $$$A$$$ в примере равен $$$[1, 2, 3, 4]$$$. Длина пароля составляет $$$2$$$. Первый элемент пароля — это максимум из $$$A[2]$$$, $$$A[4]$$$ (поскольку первое подмножество содержит индексы $$$1$$$ и $$$3$$$, мы берем максимум по остальным индексам). Второй элемент пароля — это максимум из $$$A[1]$$$, $$$A[3]$$$ (поскольку второе подмножество содержит индексы $$$2$$$, $$$4$$$).
Не забудьте считать строку "Correct" / "Incorrect" после угадывания пароля.
Название |
---|