Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки

HotLog


 

Воспитательница

(Время: 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 другую ошибку.

Пример

стандартный вводстандартный вывод
15
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()

Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!

 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 Тренировочные олимпиады
 Школьный этап
 Муниципальный этап
 Региональный этап
 Полуфинал ВКОШП
 Личное первенство СФУ
 2011 / 2012
 2012 / 2013
 2013 / 2014
 2014 / 2015
 2015 / 2016
 2016 / 2017
 2017 / 2018
 2018 / 2019
 2021 / 2022
 A. Битва движков
 B. Я не спал 2000 лет
 C. Пробежка по лестнице
 D. Разборки в космосе
 E. Бесконечные вычисления
 F. Воспитательница
 G. Инскрипция
 H. Всё очень просто
 I. Расписание занятий
 J. Культ суперкомпьютера

Красноярский краевой Дворец пионеров, (c)2006 - 2022, E-mail: admin@acmp.ru