loj#P6943. 「ICPC World Finals 2022」压缩

「ICPC World Finals 2022」压缩

题目描述

无限压缩计划联盟(Infinite Compression Plan Consortium, ICPC)开发出了一种全新的,伟大的数据压缩策略,称作「不要重复自己」(Don't Repeat Yourself, DRY)。DRY 适用于字符串,如果字符串中包含连续两个相同的子串,它就会删除其中一个。例如,在字符串 alfalfa seeds 中,它可以移除子串 seeds 中两个 e 中的一个,和子串 alfalfa 中两个 lfa 中的一个,结果为 alfa seds。DRY 也可以利用之前的删除操作——例如,在字符串 seventeenth baggage 中,首先会移除 seventeenth 中重复的 ebaggage 中重复的 g,得到 sevententh bagage,然后删除 sevententh 中重复的 entbagage 中重复的 ag,得到 seventh bage

如果有多种删除连续重复子串的方法,DRY 会选择可以得到最短的最终子串的删除方法。例如,对于字符串 ABBCDCABCDCD,DRY 有两种选择——要么删除靠近开头的两个重复的 B 中的一个,或者删除结尾处重复的 CD。如果删除了 B,则 DRY 就可以删除重复的 ABCDC,获得 ABCDCD,然后就可以删除结尾的 CD,最终得到 ABCD。然而,如果 DRY 首先移除了结尾的 CD,首先会得到 ABBCDCABCD,这样只能删除连续的 B,得到 ABCDCABCD——这个字符串不能移除更多字符了。因此,对于 DRY 来说正确的选择是先压缩两个 B,然后得到 ABCD

ICPC 观察到 DRY 在二进制串上能得到最佳结果——也就是只包含 0 和 1 的字符串。因此,因此,你的任务就是在二进制字符串上实现最佳的 DRY 算法。对于任意二进制串,你都应该输出一个通过反复使用 DRY 算法可以得到的最短字符串。

输入格式

一行一个非空字符串,长度小于等于 10510^5,且仅包含 0 和 1。

输出格式

输出一行,表示对输入字符串进行 DRY 算法后获得的最短可能字符串。如果有多于一种可能的结果,输出任意一种均可。

1111

1

101

101

10110

10