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