Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Ввод / вывод: | интерактивный | Ограничение памяти: | 2 Мб |
Данная задача является интерактивной и предполагает взаимодействие с сервером путем отправки и приема сообщений определенного вида.
Пусть имеется лексикографически упорядоченный набор строк длины n, состоящих из цифр и строчных букв латинского алфавита.
Из указанного набора была выбрана некоторая строка S * . Требуется отгадать ее в процессе общения с удаленным сервером.
В этом Вам поможет вспомогательная функция D(S), вычисляющая "расстояние" между строками S и S * .
Будем считать, что для каждой строки, содержащейся в исходном наборе, функция D возвращает целое число,
указывающее модуль разности ее порядкового номера с номером искомой строки.
Для всех остальных строк указанная функция возвращает вещественное значение
(записанное в формате с десятичной точкой).
При этом известно, что D(S) монотонно растет по мере удаления от S * .
Иначе говоря, имеют место утверждения:
∀ (S1, S2): S * < S1 ≤ S2 ⇒ D(S1) ≤ D(S2);
∀ (S1, S2): S * > S1 ≥ S2 ⇒ D(S1) ≥ D(S2).
Здесь полагается, что сравнение строк происходит в лексикографическом порядке.
Взаимодействие с сервером происходит посредством следующих команд, которые выводятся в выходной поток (stdout).
При первом запросе в выходной поток необходимо вывести команду:
run
В качестве ответа через входной поток (stdin) будет получено натуральное n — размер искомой строки.
Для проверки очередного приближения используется команда:
get, за которой следует предполагаемая строка S.
В качестве ответа будет отправлено значение D(S).
Данная команда приводит к возникновению ошибки, если указанная строка является некорректной
(имеет длину, отличную от n, либо содержит недопустимые символы).
Для завершения сеанса используется команда:
ans, за которой должна следовать строка S * .
Для корректной работы программы, после каждой команды, отправленной в выходной поток,
следует осуществлять вывод перевода строки и выполнять сброс буфера (flush).
Общее число запросов к серверу не должно превышать 18 ⋅ n + 2.
Все вещественные значения записаны в формате с фиксированной точкой и содержат
не более 200 десятичных разрядов.
0 < n ≤ 50