atcoder#ABC264G. [ABC264G] String Fair

[ABC264G] String Fair

配点 : 600600

問題文

文字列品評会では、英小文字のみからなる空でない文字列 SS に対して、その「美しさ」を決定します。

文字列 SS の美しさは、NN 個の審査項目の点数の和として定められます。 i=1,2,,Ni = 1, 2, \ldots, N について、ii 番目の審査項目の点数は 「文字列 TiT_i(入力で与えられる長さ 3 以下の文字列)が SS に連続な部分文字列として含まれる回数」に PiP_i を掛けて得られる値です。

英小文字のみからなる空でない文字列 SS の美しさとしてあり得る最大値を出力して下さい。 ただし、美しさとしていくらでも大きい値が考えられる場合は、代わりに Infinity と出力して下さい。

ここで、文字列 U=U1U2UUU = U_1U_2\ldots U_{|U|} に文字列 VV が連続な部分列として含まれる回数とは、 1iUV+11 \leq i \leq |U|-|V|+1 を満たす整数 ii であって UiUi+1Ui+V1=VU_iU_{i+1}\ldots U_{i+|V|-1} = V を満たすものの個数です。

制約

  • 1N182781 \leq N \leq 18278
  • NN は整数
  • TiT_i は英小文字のみからなる長さ 11 以上 33 以下の文字列
  • ijTiTji \neq j \Rightarrow T_i \neq T_j
  • 109Pi109-10^9 \leq P_i \leq 10^9
  • PiP_i は整数

入力

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

NN

T1T_1 P1P_1

T2T_2 P2P_2

\vdots

TNT_N PNP_N

出力

英小文字のみからなる空でない文字列 SS の美しさとしてあり得る最大値を出力せよ。 ただし、美しさとしていくらでも大きい値が考えられる場合は、代わりに Infinity と出力せよ。

3
a -5
ab 10
ba -20
Infinity

例えば、S=S = abzabz について、

  • 11 番目の審査項目の点数は、aSS に連続な部分列として含まれる回数が 22 回であることから、2×(5)=102 \times (-5) = -10
  • 22 番目の審査項目の点数は、abSS に連続な部分列として含まれる回数が 22 回であることから、2×10=202 \times 10 = 20
  • 33 番目の審査項目の点数は、baSS に連続な部分列として含まれる回数が 00 回であることから、0×(20)=00 \times (-20) = 0

であるので、SS の美しさは (10)+20+0=10(-10) + 20 + 0 = 10 となります。

別の例として、S=S = abzabzabz について、

  • 11 番目の審査項目の点数は、aSS に連続な部分列として含まれる回数が 33 回であることから、3×(5)=153 \times (-5) = -15
  • 22 番目の審査項目の点数は、abSS に連続な部分列として含まれる回数が 33 回であることから、3×10=303 \times 10 = 30
  • 33 番目の審査項目の点数は、baSS に連続な部分列として含まれる回数が 00 回であることから、0×(20)=00 \times (-20) = 0

であるので、SS の美しさは (15)+30+0=15(-15) + 30 + 0 = 15 となります。

一般に、正の整数 XX について、abzXX 回繰り返した文字列の美しさは 5X5X となります。 SS の美しさとしていくらでも大きい値が考えられるため、Infinity を出力します。

28
a -5
ab 10
ba -20
bb -20
bc -20
bd -20
be -20
bf -20
bg -20
bh -20
bi -20
bj -20
bk -20
bl -20
bm -20
bn -20
bo -20
bp -20
bq -20
br -20
bs -20
bt -20
bu -20
bv -20
bw -20
bx -20
by -20
bz -20
5

S=S = ab が考えられる美しさの最大値を達成します。

26
a -1
b -1
c -1
d -1
e -1
f -1
g -1
h -1
i -1
j -1
k -1
l -1
m -1
n -1
o -1
p -1
q -1
r -1
s -1
t -1
u -1
v -1
w -1
x -1
y -1
z -1
-1

SS は空でない文字列でなければならないことに注意して下さい。