Відгадай шеренгу
Обмеження: 2 сек., 512 МіБ
Це інтерактивна задача (де ваша програма взаємодіє з програмою журі через ввід та вивід).
Зеник з Марічкою мають ферму з \(n\) жеребцями. Коні на фермі мають різні масті — вороні, гніді, булані та інші. Усього бувають \(26\) різних мастей, позначених малими латинськими буквами.
Фермери вишикували своїх жеребців у шеренгу. Шеренгу можна подати рядком \(s\) з \(n\) малих букв англійського алфавіту, що позначають масті коней у шерензі.
Коли коней вишикувано, Зеник з Марічкою вже не змінюватимуть їхній порядок у шерензі. Тобто рядок \(s\) є зафіксований заздалегідь.
Однак фермери не повідомляють вам рядок \(s\) — ви повинні його відгадати за обмежену кількість спроб.
У кожній спробі ви повідомляєте фермерам рядок \(t\) з малих букв англійського алфавіту, а вони вам дають одну з трьох відповідей:
рядок \(t\) збігається з рядком \(s\),
рядок \(t\) лексикографічно менший за рядок \(s\),
рядок \(t\) лексикографічно більший за рядок \(s\).
Рядок \(a\) є лексикографічно меншим за рядок \(b\), якщо \(a\) зустрічається в словнику раніше за \(b\).
Відгадайте шеренгу жеребців за не більше ніж \(1000\) спроб. Сумарна довжина рядків \(t\) у ваших спробах не повинна перевищувати \(4 \cdot 10^5\).
Вхідні дані
Вам задано ціле число \(n\) — кількість коней у шерензі.
Після зчитування числа \(n\) починається взаємодія між вашою програмою та Зеником з Марічкою, під час якої ваша програма робить спроби відгадати шеренгу, а Зеник з Марічкою на них відповідають.
Щоб зробити спробу, виведіть \(t\) — рядок з малих букв англійського алфавіту.
У відповідь на спробу Зеник з Марічкою дадуть один з трьох символів в окремому рядку:
символ
=
, якщо рядок \(t\) збігається з рядком \(s\),символ
<
, якщо рядок \(t\) лексикографічно менший за рядок \(s\),символ
>
, якщо рядок \(t\) лексикографічно більший за рядок \(s\).
Якщо ви на свою спробу отримали у відповідь =
, це
означає, що ви відгадали рядок \(s\).
Після цього негайно завершіть роботу вашої програми. В іншому разі вашу
відповідь не буде зараховано.
Якщо спроба невалідна (наприклад, перевищено максимальну кiлькiсть
запитань), Зеник з Марічкою скажуть вам у відповідь -1
та
припинять взаємодію. У такому випадку завершiть роботу програми, щоб
отримати вердикт Неправильна вiдповiдь
. Якщо цього не
зробити, ви можете отримати вердикт
Помилка часу виконання
.
Подбайте про виклик методу flush
після виводу кожного
рядка. Для цього можна використовувати:
fflush(stdout)
,cout << endl
абоcout.flush()
вC++
;System.out.flush()
вJava
;flush(output)
вPascal
;sys.stdout.flush()
вPython
;Console.Out.Flush()
вC#
.
Обмеження
\(1 \le n \le 210\),
дозволено зробити не більше ніж \(1000\) спроб,
сумарна довжина рядків \(t\) у ваших спробах не повинна перевищувати \(4 \cdot 10^5\).
Оцінювання складається з таких блоків:
1 бал за приклад з умови,
14 балів: \(n = 1\),
19 балів: \(n \le 2\),
24 бали: \(n \le 20\),
38 балів: \(n \le 200\),
4 бали: без додаткових обмежень.
Бали за блок ви отримаєте, тільки якщо ваша програма пройде всі тести з блоку.
Примітки
Нижче наведено приклад взаємодії для \(n=10\), \(s
=\)algotester
.
Ввід | Вивід | Опис |
---|---|---|
10 |
Зеник з Марічкою кажуть число \(n\). | |
olympiad |
Учасник робить спробу
olympiad . |
|
> |
Йому відповідають, що рядок
olympiad лексикографічно більший за \(s\). |
|
algo |
Учасник робить спробу
algo . |
|
< |
Йому відповідають, що рядок
algo лексикографічно менший за \(s\). |
|
algorithm |
Учасник робить спробу
algorithm . |
|
< |
Йому відповідають, що рядок
algorithm лексикографічно менший за \(s\). |
|
algotester |
Учасник робить спробу
algotester . |
|
= |
Йому відповідають, що рядок
algotester дорівнює \(s\). |
Надіслати розв'язок
Element Type | Створено | Хто | Задача | Компілятор | Результат | Час (сек.) | Пам'ять (МіБ) | № | Дії |
---|
Element Type | Створено | Хто | Задача | Компілятор | Результат | Час (сек.) | Пам'ять (МіБ) | № | Дії |
---|