問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
英小文字からなる長さ N の文字列 S が入力として与えられるので、1 ≦ i ≦ N を満たすすべての i それぞれについて、以下の答えを出力してください。
・S の 1 文字目から i 文字目までの部分文字列を T_{i} とする。T_{i} の接頭辞であり、接尾辞でもあり、なおかつその接尾辞と接頭辞が T_{i} 上で共通部分を持たないような文字列のうち、最長のものの長さ
例えば S = abababbb
に対して i = 6 の場合、
S の 1 文字目から i 文字目までの連続部分列は ababab
なので、
・接頭辞 : { φ
, a
, ab
, aba
, abab
, ababa
}
・接尾辞 : { φ
, b
, ab
, bab
, abab
, babab
}
となり、どちらにも含まれていて元の文字列上で共通部分を持たない文字列は ab
と φ
なので、2 が答えになります。
ここで、文字列abab
は接頭辞であり接尾辞でもあるのですが、文字列 ababab
上の 3 文字目から 4 文字目までの共通部分を持つので条件を満たしません。
入力は以下のフォーマットで与えられます
N
S
1 ≦ i ≦ N を満たす i それぞれについて、
i 行目に
・S の 1 文字目から i 文字目までの部分文字列を T_{i} とする。T_{i} の接頭辞であり、接尾辞でもあり、なおかつその接尾辞と接頭辞が T_{i} 上で共通部分を持たないような文字列のうち、最長のものの長さを表す整数
を出力してください。
ただし、最後には改行を入れ、
余計な文字や空白、空行を出力しないようにしてください。
すべてのテストケースにおいて、以下の条件を満たします。
・2 ≦ N ≦ 500000
・S は英小文字のみからなる文字列
10
fizzfizzfi
0
0
0
0
1
2
3
4
1
2