[JSOI2019] 节日庆典
题目背景
JYY 和探险队顺利完成了火星上的任务。在离开前,探险队正好赶上了火星人一年一度最盛大的节日「气球节」。然而,火星人遇到了每年一度的麻烦:怎样最美观地摆放气球。JYY 决定请你设计算法帮助火星人解决这个问题。
题目描述
在庆典开始前,火星人会把气球准备好并串在一根绳子上。气球按顺序排列可以看成是一个由小写字母组成的长度为$n$的字符串$S$。然后,火星人会按照字符串的顺序逐个把气球加入到一个庆典的圆环上,并且表演一个节目庆祝。
下图展示了一串气球 **cbbadbcd** 在进行到第$5$个节目时的情形,此时在庆典环上的气球是 **cbbad**。
![](https://cdn.luogu.com.cn/upload/pic/57738.png)
为了让每个节目都更好看,火星人希望在每个节目开始前调整气球在环上的顺序,使得每个节目的气球排布都最美观。对于一组气球(一个字符串),火星人认为最美观的字符串是庆典圆环上按绳子方向读出**字典序最小的字符串**,例如对于 **cbbad**,共有$5$个读出字符串的位置:
- cbbad ($i=1$);
- bbadc ($i=2$);
- badcb ($i=3$);
- adcbb ($i=4$);
- dcbba ($i=5$)。
如果有多个字典序最小的字符串,火星人希望找出**离绳头最近**的那个(即最小的那个)。更严谨地说,对于字符串,定义
$$T_i=T[i……|T|]::T[1……i-1](1 \leq i \leq |T|)$$
其中$::$是字符串的拼接操作。定义$f(T)$为最小的$i$($1 \leq i \leq |T|$)满足$T_i=min(T_1,T_2,……,T_{|T|})$。
JYY希望你帮助他设计一个算法,让火星人每个节目的气球排列都最美观,即对于给定字符串$S$的每一个前缀$S[1……i]$($1 \leq i \leq |S|$),求出$f(S[1……i])$。
输入输出格式
输入格式
输入只有一行,该行包括一个字符串$S$。
输出格式
在一行中对于每个$i$($1 \leq i \leq |S|$),输出一个整数$f(S[1……i])$。输出的数字之间以空格分隔。
输入输出样例
输入样例 #1
abaacaba
输出样例 #1
1 1 3 3 3 6 3 8
说明
![](https://cdn.luogu.com.cn/upload/pic/57739.png)