atcoder#ABC268F. [ABC268F] Best Concatenation

[ABC268F] Best Concatenation

配点 : 500500

問題文

1 から 9 の数字および X のみからなる NN 個の文字列 S1,S2,,SNS_1, S_2, \ldots, S_N が与えられます。

(1,2,,N)(1, 2, \ldots, N) を並べ替えた列 P=(P1,P2,,PN)P = (P_1, P_2, \ldots, P_N) を一つ選び、 文字列 T=SP1+SP2++SPNT = S_{P_1} + S_{P_2} + \cdots + S_{P_N} を作ります。ここで、++ は文字列の連結を表します。

そして、文字列 T=T1T2TTT = T_1T_2\ldots T_{|T|} の「スコア」を計算します( T|T| は文字列 TT の長さを表します)。 TT のスコアは、スコアが 00 の状態から始め、下記の 99 個の手順を行うことで計算されます。

  • 1i<jT1 \leq i \lt j \leq |T| および Ti=T_i = X かつ Tj=T_j = 1 を満たす整数の組 (i,j)(i, j) の個数だけ、スコアを 11 点加算する 。
  • 1i<jT1 \leq i \lt j \leq |T| および Ti=T_i = X かつ Tj=T_j = 2 を満たす整数の組 (i,j)(i, j) の個数だけ、スコアを 22 点加算する。
  • 1i<jT1 \leq i \lt j \leq |T| および Ti=T_i = X かつ Tj=T_j = 3 を満たす整数の組 (i,j)(i, j) の個数だけ、スコアを 33 点加算する。
  • \cdots
  • 1i<jT1 \leq i \lt j \leq |T| および Ti=T_i = X かつ Tj=T_j = 9 を満たす整数の組 (i,j)(i, j) の個数だけ、スコアを 99 点加算する。

PP を任意に選ぶときの、TT のスコアとしてあり得る最大値を出力してください。

制約

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • NN は整数
  • SiS_i1 から 9 の数字および X のみからなる長さ 11 以上の文字列
  • S1,S2,,SNS_1, S_2, \ldots, S_N の長さの総和は 2×1052 \times 10^5 以下

入力

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

NN

S1S_1

S2S_2

\vdots

SNS_N

出力

答えを出力せよ。

3
1X3
59
XXX
71

P=(3,1,2)P = (3, 1, 2) とすると、T=S3+S1+S2=T = S_3 + S_1 + S_2 = XXX1X359 です。 このとき、TT のスコアは次の通り計算されます。

  • 1i<jT1 \leq i \lt j \leq |T| および Ti=T_i = X かつ Tj=T_j = 1 を満たす整数の組 (i,j)(i, j)33 個あり、
  • 1i<jT1 \leq i \lt j \leq |T| および Ti=T_i = X かつ Tj=T_j = 3 を満たす整数の組 (i,j)(i, j)44 個あり、
  • 1i<jT1 \leq i \lt j \leq |T| および Ti=T_i = X かつ Tj=T_j = 5 を満たす整数の組 (i,j)(i, j)44 個あり、
  • 1i<jT1 \leq i \lt j \leq |T| および Ti=T_i = X かつ Tj=T_j = 9 を満たす整数の組 (i,j)(i, j)44 個あります。

よって、TT のスコアは $1 \times 3 + 3 \times 4 + 5 \times 4 + 9 \times 4 = 71$ であり、これが考えられる最大値です。

10
X63X395XX
X2XX3X22X
13
3716XXX6
45X
X6XX
9238
281X92
1XX4X4XX6
54X9X711X1
3010