atcoder#ABC213F. [ABC213F] Common Prefixes

[ABC213F] Common Prefixes

配点 : 500500

問題文

22 つの文字列 X,YX,Y に対して、その類似度 f(X,Y)f(X,Y) を、XXYY を先頭から見て一致している文字数とします。 例えば abcaxbc の類似度は 11aaaaaaa の類似度は 33 です。

長さ NN の文字列 SS が与えられます。SSii 文字目以降からなる文字列を SiS_i とします。k=1,,Nk=1,\ldots,N のそれぞれについて、f(Sk,S1)+f(Sk,S2)++f(Sk,SN)f(S_k,S_1)+f(S_k,S_2)+\ldots+f(S_k,S_N) を求めてください。

制約

  • 1N1061 \leq N \leq 10^6
  • SS は英小文字のみからなる長さ NN の文字列

入力

入力は以下の形式で標準入力から与えられる。

NN

SS

出力

NN 行出力せよ。

ii 行目には k=ik=i の問題の答えを出力せよ。

3
abb
3
3
2

S1,S2,S3S_1,S_2,S_3 はそれぞれ abb, bb, b です。

  • k=1k=1 のとき f(S1,S1)+f(S1,S2)+f(S1,S3)=3+0+0=3f(S_1,S_1)+f(S_1,S_2)+f(S_1,S_3)=3+0+0=3
  • k=2k=2 のとき f(S2,S1)+f(S2,S2)+f(S2,S3)=0+2+1=3f(S_2,S_1)+f(S_2,S_2)+f(S_2,S_3)=0+2+1=3
  • k=3k=3 のとき f(S3,S1)+f(S3,S2)+f(S3,S3)=0+1+1=2f(S_3,S_1)+f(S_3,S_2)+f(S_3,S_3)=0+1+1=2
11
mississippi
11
16
14
12
13
11
9
7
4
3
4