题目描述
1
から 9
の数字および X
のみからなる N 個の文字列 S1, S2, …, SN が与えられます。
(1, 2, …, N) を並べ替えた列 P = (P1, P2, …, PN) を一つ選び、 文字列 T = SP1 + SP2 + ⋯ + SPN を作ります。ここで、+ は文字列の連結を表します。
そして、文字列 T = T1T2… T∣T∣ の「スコア」を計算します( ∣T∣ は文字列 T の長さを表します)。
T のスコアは、スコアが 0 の状態から始め、下記の 9 個の手順を行うことで計算されます。
- 1 ≤ i < j ≤ ∣T∣ および Ti =
X
かつ Tj = 1
を満たす整数の組 (i, j) の個数だけ、スコアを 1 点加算する 。
- 1 ≤ i < j ≤ ∣T∣ および Ti =
X
かつ Tj = 2
を満たす整数の組 (i, j) の個数だけ、スコアを 2 点加算する。
- 1 ≤ i < j ≤ ∣T∣ および Ti =
X
かつ Tj = 3
を満たす整数の組 (i, j) の個数だけ、スコアを 3 点加算する。
- ⋯
- 1 ≤ i < j ≤ ∣T∣ および Ti =
X
かつ Tj = 9
を満たす整数の組 (i, j) の個数だけ、スコアを 9 点加算する。
P を任意に選ぶときの、T のスコアとしてあり得る最大値を出力してください。
输入格式
入力は以下の形式で標準入力から与えられる。
N S1 S2 ⋮ SN
输出格式
答えを出力せよ。
题目大意
给定 n 个由 X
和数字构成的字符串,你需要对其进行排列并拼接成新的字符串 T 以最大化其分数。定义其分数为对于字符串中每一个数字,使数字对应的数值乘上其之前 X
的数量,并求和。输出分数最大值。
3
1X3
59
XXX
71
10
X63X395XX
X2XX3X22X
13
3716XXX6
45X
X6XX
9238
281X92
1XX4X4XX6
54X9X711X1
3010
提示
制約
- 2 ≤ N ≤ 2 × 105
- N は整数
- Si は
1
から 9
の数字および X
のみからなる長さ 1 以上の文字列
- S1, S2, …, SN の長さの総和は 2 × 105 以下
Sample Explanation 1
P = (3, 1, 2) とすると、T = S3 + S1 + S2 = XXX1X359
です。 このとき、T のスコアは次の通り計算されます。 - 1 ≤ i < j ≤ ∣T∣ および Ti = X
かつ Tj = 1
を満たす整数の組 (i, j) が 3 個あり、 - 1 ≤ i < j ≤ ∣T∣ および Ti = X
かつ Tj = 3
を満たす整数の組 (i, j) が 4 個あり、 - 1 ≤ i < j ≤ ∣T∣ および Ti = X
かつ Tj = 5
を満たす整数の組 (i, j) が 4 個あり、 - 1 ≤ i < j ≤ ∣T∣ および Ti = X
かつ Tj = 9
を満たす整数の組 (i, j) が 4 個あります。 よって、T のスコアは $ 1\ \times\ 3\ +\ 3\ \times\ 4\ +\ 5\ \times\ 4\ +\ 9\ \times\ 4\ =\ 71 $ であり、これが考えられる最大値です。