Нечітке Сортування Перестановок
Це інтерактивна задача.
Ви маєте приховану перестановку з цілих чисел від до .
Ваше завдання — відсортувати цю перестановку у зростаючому порядку, використовуючи порівняння та обмін пар елементів. Задача могла б бути простою, але автор задачі, захоплений арифметикою з плаваючою комою в задачах G і J, реалізував "неточний" компаратор:
якщо , повертається ;
інакше, якщо , повертається ;
інакше, повертається .
Ваша програма може робити запити для порівняння будь-яких двох елементів за допомогою цього компаратора або для обміну будь-яких двох елементів. Після кожного обміну буде повідомлено, чи стала перестановка відсортованою.
Відсортуйте перестановку розміром до , використовуючи не більше ніж запитів.
Протокол взаємодії
Отримайте ціле число від програми журі — розмір перестановки (). Потім виводьте запити та отримуйте відповіді від програми журі. Після кожного запиту вихід повинен бути очищений, а потім має бути прочитане одне ціле число — відповідь на цей запит.
Запити на порівняння мають формат "C i j
", а запити на обмін мають формат "S i j
", де та — індекси двох елементів (). Запити з дозволені.
Відповідь на запит на порівняння — це , якщо "приблизно дорівнює" , інакше: , якщо , і , якщо .
Запит на обмін змінює місцями значення в та , і відповідь на запит на обмін — це , якщо після цього обміну масив став відсортованим у зростаючому порядку, і в іншому випадку.
Ваша програма повинна завершити роботу, як тільки отримає як відповідь на запит на обмін.
Програма повинна зробити принаймні один запит на обмін. Наприклад, якщо прихована перестановка вже відсортована, вона може зробити запит "S 1 1
", отримати і завершити роботу.
Інтерактор не є адаптивним. Початкова перестановка обирається програмою журі заздалегідь, до того, як ви зробите свій перший запит.