#L4228. 「ROI 2021 Day2」莫斯科数字

「ROI 2021 Day2」莫斯科数字

题目描述

译自 ROI 2021 Day2 T1. Московские числа

你可能听说过罗马数字,也可能听过「莫斯科是第三罗马」这句话。因此,我们决定借鉴罗马数字,发明一种高级版本——莫斯科数字

莫斯科数字的数字是从 AZ 的大写英文字母。一个数字是由多个字母组成的字符串。每个字母对应一个数值:

字母 数值 字母 数值 字母 数值 字母 数值
A 11 H 51035 \cdot 10^3 O 10710^7 V 510105 \cdot 10^{10}
B 55 I 10410^4 P 51075 \cdot 10^7 W 101110^{11}
C 1010 J 51045 \cdot 10^4 Q 10810^8 X 510115 \cdot 10^{11}
D 5050 K 10510^5 R 51085 \cdot 10^8 Y 101210^{12}
E 100100 L 51055 \cdot 10^5 S 10910^9 Z 510125 \cdot 10^{12}
F 500500 M 10610^6 T 51095 \cdot 10^9
G 10310^3 N 51065 \cdot 10^6 U 101010^{10}

数字的值等于组成它的各个字母的贡献之和。字母的贡献可以是正的,也可以是负的。如果字母右边没有比它大的字母,那么它的贡献等于它的数值。否则,它的贡献等于它的数值取负。

例如:

  • BBA 的值是 5+5+1=115 + 5 + 1 = 11
  • BBBC 的值是 5+(5)+(5)+10=5-5 + (-5) + (-5) + 10 = -5
  • ABC 的值是 1+(5)+10=4-1 + (-5) + 10 = 4
  • BAC 的值是 5+(1)+10=4-5 + (-1) + 10 = 4
  • ACA 的值是 1+10+1=10-1 + 10 + 1 = 10

你得到了一些数字模板。每个模板是由大写英文字母和问号组成的字符串。对于每个模板,需要确定如果将每个问号替换为莫斯科数字的字母,能得到的最大数字是多少。

输入格式

第一行包含一个整数 tt (1t5104)(1 \le t \le 5 \cdot 10^4),表示模板的数量。

接下来的 tt 行,每行是一个由大写英文字母和问号组成的字符串 sis_i。所有字符串的总长度不超过 31053 \cdot 10^5

输出格式

对于每个模板,输出两行。第一行输出可以得到的最大数字的值(十进制表示)。第二行输出将问号替换为字母后的模板,使其达到最大值。

样例

输入

4
BBBC
????
A?B?C?D
YYYYY?

输出

-5
BBBC
20000000000000
ZZZZ
15000000000034
AZBZCZD
6000000000000
YYYYYY

数据范围与提示

令所有字符串的总长度为 SS

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 SS 的限制 附加限制 子任务依赖
1 66 S1000S \le 1000 sis_i 不包含问号
2 99 S3105S \le 3 \cdot 10^5 1
3 4040 S1000S \le 1000 sis_i 包含不超过三个问号
4 2020 0, 1, 3
5 2525 S3105S \le 3 \cdot 10^5 0, 1~4