Воспитательница
(Время: 2 сек. Память: 128 Мб Сложность: 71%)
Это интерактивная задача.
Сначала выдаётся множество допустимых слов. Описывается оно числом n — количество слов во множестве, далее идут сами слова.
Вам требуется одолеть Марью Ивановну. Марья Ивановна загадывает одно слово из множества. Вы можете создать запрос — один строчный символ латинского алфавита. Марья Ивановна ответит, сколько раз в загаданном слове встречается данный символ.
Ваша задача — отгадать загаданное слово не более, чем за 3 запроса.
Входные данные
В первой строке входных данных задано число n — количество слов во множестве (1 ≤ n ≤ 100). В следующих n строках указаны слова множества, по одному в каждой строке (длина каждого из них не превосходит 10). В n+2 строке задано целое число T (1 ≤ T ≤ 104) — количество раундов, которые нужно сыграть.
Гарантируется, слова во множестве подобраны так, что любое слово однозначно можно определить при помощи трёх запросов.
Протокол взаимодействия
После считывания входных данных, тестирующая система готова отвечать на запросы вашей программы.
В каждой партии взаимодействие начинает ваша программа запросом строчного латинского символа C. Запрос задаётся в виде «? C». После запроса вы получите ответ — сколько раз встречается символ C в загаданном слове. Данный запрос можно повторить до 3 раз.
Если вы готовы сообщить загаданное слово A, выведите строку «! A». Если по итогу программа жюри выведет число 1, то предложенный ответ оказался верным и начнётся следующий раунд игры. Если программа жюри выведет число −1, то ответ неверный.
В случае, если на ваш ответ программа жюри ответила −1, программа должна немедленно завершиться, в противном случае есть шанс получить вместо Wrong Answer другую ошибку.
Пример
№ | стандартный ввод | стандартный вывод |
1 | 5
ab
bc
cd
ad
aad
1
0
0
1
1 | ? a
? b
? c
! cd |
Примечание
Для корректной работы программы после каждой операции вывода данных выводите перевод строки, а также очищайте буфер вывода. Очистка буфера вывода производится следующим образом:
- В языке Pascal: flush(output)
- В С/С++: fflush(stdout) или cout.flush()
- В Java: System.out.flush()
- В Python: sys.stdout.flush() из библиотеки sys
- В C# и Basic: Console.Out.Flush()
Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!
|