Відгадай шеренгу
Обмеження: 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 | Створено | Хто | Задача | Компілятор | Результат | Час (сек.) | Пам'ять (МіБ) | № | Дії |
|---|