Відгадай шеренгу
Обмеження: 2 сек., 512 МіБ
Це інтерактивна задача (де ваша програма взаємодіє з програмою журі через ввід та вивід).
Зеник з Марічкою мають ферму з nn жеребцями. Коні на фермі мають різні масті — вороні, гніді, булані та інші. Усього бувають 2626 різних мастей, позначених малими латинськими буквами.
Фермери вишикували своїх жеребців у шеренгу. Шеренгу можна подати рядком ss з nn малих букв англійського алфавіту, що позначають масті коней у шерензі.
Коли коней вишикувано, Зеник з Марічкою вже не змінюватимуть їхній порядок у шерензі. Тобто рядок ss є зафіксований заздалегідь.
Однак фермери не повідомляють вам рядок ss — ви повинні його відгадати за обмежену кількість спроб.
У кожній спробі ви повідомляєте фермерам рядок tt з малих букв англійського алфавіту, а вони вам дають одну з трьох відповідей:
рядок tt збігається з рядком ss,
рядок tt лексикографічно менший за рядок ss,
рядок tt лексикографічно більший за рядок ss.
Рядок aa є лексикографічно меншим за рядок bb, якщо aa зустрічається в словнику раніше за bb.
Відгадайте шеренгу жеребців за не більше ніж 10001000 спроб. Сумарна довжина рядків tt у ваших спробах не повинна перевищувати 4⋅1054⋅105.
Вхідні дані
Вам задано ціле число nn — кількість коней у шерензі.
Після зчитування числа nn починається взаємодія між вашою програмою та Зеником з Марічкою, під час якої ваша програма робить спроби відгадати шеренгу, а Зеник з Марічкою на них відповідають.
Щоб зробити спробу, виведіть tt — рядок з малих букв англійського алфавіту.
У відповідь на спробу Зеник з Марічкою дадуть один з трьох символів в окремому рядку:
символ
=
, якщо рядок tt збігається з рядком ss,символ
<
, якщо рядок tt лексикографічно менший за рядок ss,символ
>
, якщо рядок tt лексикографічно більший за рядок ss.
Якщо ви на свою спробу отримали у відповідь =
, це
означає, що ви відгадали рядок ss.
Після цього негайно завершіть роботу вашої програми. В іншому разі вашу
відповідь не буде зараховано.
Якщо спроба невалідна (наприклад, перевищено максимальну к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≤n≤2101≤n≤210,
дозволено зробити не більше ніж 10001000 спроб,
сумарна довжина рядків tt у ваших спробах не повинна перевищувати 4⋅1054⋅105.
Оцінювання складається з таких блоків:
1 бал за приклад з умови,
14 балів: n=1n=1,
19 балів: n≤2n≤2,
24 бали: n≤20n≤20,
38 балів: n≤200n≤200,
4 бали: без додаткових обмежень.
Бали за блок ви отримаєте, тільки якщо ваша програма пройде всі тести з блоку.
Примітки
Нижче наведено приклад взаємодії для n=10n=10, s=s=algotester
.
Ввід | Вивід | Опис |
---|---|---|
10 |
Зеник з Марічкою кажуть число nn. | |
olympiad |
Учасник робить спробу
olympiad . |
|
> |
Йому відповідають, що рядок
olympiad лексикографічно більший за ss. |
|
algo |
Учасник робить спробу
algo . |
|
< |
Йому відповідають, що рядок
algo лексикографічно менший за ss. |
|
algorithm |
Учасник робить спробу
algorithm . |
|
< |
Йому відповідають, що рядок
algorithm лексикографічно менший за ss. |
|
algotester |
Учасник робить спробу
algotester . |
|
= |
Йому відповідають, що рядок
algotester дорівнює ss. |