問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
以下の英小文字の組を互いに対称な文字と定義します。
b <=> d
i <=> i
l <=> l
m <=> m
n <=> n
o <=> o
p <=> q
s <=> z
t <=> t
u <=> u
v <=> v
w <=> w
x <=> x
また、互いに対称な文字の組を左右逆に並べたものも互いに対称な文字の組とみなします。
つづいて、対称文 x を、つぎのように定義します。
x が空文字列であるとき、x は対称文です。
a と a が互いに対称な文字の組であるとき、a は対称文です。
x が対称文であり、a と b が互いに対称な文字の組であるとき、axb も対称文です。
たとえば、bid, bud, noon は対称文です。
文字列 s が与えられます。このとき、s の 1, 2, 3, ..., |s| 番目の文字を中心としたときの最長対称文半径を求めてください。
なお、文字を中心とする最長対称文半径とは、その文字を中心とする対称文の最大の長さを n としたとき、(n + 1) / 2 のことを言います。
s
s の 1, 2, 3, ..., |s| 番目の文字を中心としたときの最長対称文半径を、改行区切りで上から順に出力してください。
また、末尾に改行を入れ、余計な文字を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≦ |s| ≦ 100000 = 10^5
・ s は英小文字のみからなる文字列
bidinibid
0
2
0
1
5
1
0
2
0