Олимпиадный тренинг

Задача . ИТМО-2526. 5–8 класс. Сообщение из Котинска


Задача

Темы: Олимпиады ИТМО

Кот Матроскин ждёт невероятно важное сообщение от своих родственников из Котинска. Но так как его родственники очень тревожные и боятся, что сообщение будет перехвачено, они его закодировали.

Кодирование, которое использовали коты, основано на том, что если какая-то подстрока уже встречалась ранее в строке, то на неё можно сослаться, указав, на сколько нужно сместиться относительно текущего элемента, чтобы попасть на первый символ нужной нам подстроки, и размер подстроки. Закодированное сообщение представляет из себя строку, в которой последовательно идут тройки элементов:

  • первый элемент тройки — цифра, на которую нужно сместиться влево в раскодированной части исходной строки, чтобы получить первый символ повторяющейся ранее подстроки;
  • второй элемент тройки — цифра, сколько символов нужно забрать (размер подстроки);
  • третий элемент — буква, которая будет стоять за скопированной подстрокой.

Пример: закодированная строка 00a00b00c33d. Исходная строка будет строиться следующим образом:

  • Изначально у нас пустая строка «».
  • 00a: смещаемся на 0 символов влево и копируем подстроку длиной 0, после неё ставим символ a. Получилась строка «a».
  • 00b: получилась строка «ab».
  • 00c: получилась строка «abc».
  • 33d: смещаемся на 3 символа влево и копируем подстроку длиной 3, после неё ставим символ d. Получилась строка «abcabcd».

«abcabcd» — раскодированная строка.

Матроскин получил одно и то же закодированное сообщение от двух родственников, но проблема в том, что оба родственника допустили по одной ошибке в своих кодах. Кот уже выяснил, что оба родственника ошиблись в записи третьего элемента одной из троек (каждый в своей тройке). Помогите Матроскину восстановить сообщение.

Полученные сообщения от родственников из Котинска:

  • 00a00a00b00c31c11b73b00e00f00a
  • 00a11b00c41c00c51c73e00f00a

Примечание: подстрокой называется непрерывная последовательность символов исходной строки. Например, «a», «bc» — будут подстроками для строки «abc».


time 500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя