22. Алиса, Боб и шифрование

Не решаласьСложная

Алиса и Боб всё ещё работают в отделе безопасности передачи данных и занимаются любимым делом — исследуют только что придуманный алгоритм шифрования на криптостойкость.

Алгоритм, придуманный Алисой и Бобом, весьма прост. Во время шифрования алгоритм принимает символы шифруемого текста по одному и заменяет этот символ на ровно один другой символ. Кодировка, которой пользуются Алиса и Боб, состоит из mm символов, поэтому можно считать, что текст преставляет собой последовательность натуральных чисел, не превосходящих mm. Во время работы алгоритм шифрования поддерживает перестановку натуральных чисел от 11 до mm. В начале работы перестановка тождественна, то есть pi=ip_i = i для всех ii. Когда алгоритму на вход поступает символ xx, алгоритм заменяет его на номер позиции в перестановке (в 1-индексации), на которой находится символ xx, а также переносит xx в начало перестановки. Например, если в некоторый момент работы алгоритма перестановка символов в нём равна [4,2,1,3][4, 2, 1, 3], а на вход подаётся символ 11, то символ 11 будет заменён на символ 33, поскольку 11 стоит в перестановке на третьей позиции, а перестановка примет вид [1,4,2,3][1, 4, 2, 3]. Несложно заметить, что результатом шифрования текста, состоящего из nn натуральных чисел, не превосходящих mm, также является текст, состоящий из nn натуральных чисел, не превосходящих mm.

Для упрощения исследования Алиса и Боб решили реализовать эффективное кодирование и декодирование текстов при помощи своего алгоритма, однако Чак, Крейг и Ева нарушили их планы, поэтому Алиса и Боб просят вас реализовать их алгоритм кодирования.

Формат ввода

В первой строке заданы три целых числа nn, mm и typetype (1n,m300000,type{1,2}1 \leq n, m \leq 300\,000, type \in \{1, 2\}) — длина текста, количество символов в кодировке и режим работы программы соответственно.

Если type=1type = 1, то требуется зашифровать заданный текст.

Если type=2type = 2, то требуется расшифровать заданный зашифрованный текст.

В следующей строке задано nn целых чисел (1aim1 \leq a_i \leq m) — текст для обработки.

Формат вывода

Выведите nn целых чисел — результат обработки текста. Можно показать, что результат расшифровки текста всегда существует и единственен.

Примечание

В первом примере требуется зашифровать заданный текст. Проиллюстрировать работу алгоритма удобно при помощи таблицы. Обозначим за xx — символ текста, pp — перестановку символов кодировки до шифрования xx, yy — зашифрованный символ.

пример

Во втором примере требуется расшифровать текст, зашифрованный в первом пункте, поэтому результат расшифровки совпадёт с исходным текстом.

Ограничения

Ограничение времени

1 с

Ограничение памяти

512 МБ

Пример 1

Ввод
7 3 1
2 3 1 2 1 1 1
Вывод
2 3 3 3 2 1 1

Пример 2

Ввод
7 3 2
2 3 3 3 2 1 1
Вывод
2 3 1 2 1 1 1

Теги

Нужно войти, чтобы отправить решение.Войти