小红的提拉米苏配方(hard)
题号:NC312196
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}本题为问题的困难版本,两题的区别在于字符串的数据范围与小红的操作次数。本题中,小红可以进行任意次操作。

\hspace{15pt}小红正在优化她的提拉米苏配方。配方由一个仅包含字符 \texttt{`0'}, \texttt{`1'}, \texttt{`2'} 的字符串 s 表示,其中:
\hspace{23pt}\bullet\,\texttt{`0'} 代表可可粉;
\hspace{23pt}\bullet\,\texttt{`1'} 代表奶霜;
\hspace{23pt}\bullet\,\texttt{`2'} 代表奶油。

\hspace{15pt}小红可以重复进行如下操作任意次(包括 0 次):
\hspace{23pt}\bullet\,选择两个不同位置的字符 \texttt{`1'}(奶霜);
\hspace{23pt}\bullet\,将其中一个 \texttt{`1'}(奶霜)从字符串中删除(其右侧字符依次左移补齐);
\hspace{23pt}\bullet\,将另一个 \texttt{`1'}(奶霜)替换为 \texttt{`2'}(奶油)。

\hspace{15pt}请你输出经过若干次操作后能得到的字典序最小的配方字符串。

【名词解释】
\hspace{15pt}字符串的字典序比较:从左到右逐个比较两个字符串的字符。如果在某个位置上字符不同,比较这两个字符的 ASCII 码顺序,ASCII 码小的字符串字典序也小。如果一直比较到其中一个字符串结束,则较短的字符串字典序更小。例如,字符串 \texttt{\texttt{ 比较时,由于第一个字符不相同,所以 \texttt{

输入描述:

\hspace{15pt}在一行上输入一个长度为 |s|,仅由字符 \texttt{`0'}, \texttt{`1'}, \texttt{`2'} 组成的字符串 s\left(1 \leqq |s| \leqq 2 \times 10^5\right),表示小红的提拉米苏配方。

输出描述:

\hspace{15pt}在一行上输出一个字符串,表示小红能获得的字典序最小的新配方。
示例1

输入

复制
12101

输出

复制
1202

说明

\hspace{15pt}在这个样例中,可以进行一次操作得到 \texttt{,可以证明这种操作方式得到的字典序是最小的。
示例2

输入

复制
12112

输出

复制
12112