Задача №691. Упаковка символов
Билл пытается компактно представить последовательности прописных символов от A
до Z
с помощью упаковки повторяющихся подпоследовательностей внутри них. Например, один из способов представить последовательность AAAAAAAAAABABABCCD
- это 10(A)2(BA)B2(C)D
. Он формально определяет сжатые последовательности символов и правила перевода их в несжатый вид следующим образом:
- Последовательность, содержащая один символ от
A
доZ
, является упакованной. Распаковка этой последовательности даёт ту же последовательность из одного символа. - Если
S
иQ
- упакованные последовательности, тоSQ
- также упакованная последовательность. ЕслиS
распаковывается вS'
, аQ
распаковывается вQ'
, тоSQ
распаковывается вS'Q'
. - Если
S
- упакованная последовательность, тоX(S)
- также упакованная последовательность, гдеX
- десятичное представление целого числа, большего 1. ЕслиS
распаковывается вS'
, тоX(S)
распаковывается вS'
, повторённуюX
раз.
Следуя этим правилам, легко распаковать любую заданную упакованную последовательность. Однако Биллу более интересен обратный переход. Он хочет упаковать заданную последовательность так, чтобы результирующая сжатая последовательность содержала наименьшее возможное число символов.
Ограничения: длина исходной последовательности от 1 до 100.
В первой строке находится последовательность символов от A
до Z
.
В единственной строке выводится упакованная последовательность наименьшей длины, которая распаковывается в заданную последовательность. Если таких последовательностей несколько, можно выводить любую.
AAAAAAAAAABABABCCD
9(A)3(AB)CCD
NEERCYESYESYESNEERCYESYESYES
2(NEERC3(YES))