#LQ1343. 故障

故障

问题描述

在软件或系统开发中, 我们会遇到各种各样的故障。为了从故障现象反推故障原因, 工程师们会总结一种叫做相关性矩阵的二维表格, 来表示故障原因 与故障现象之间的关系。比如:

+---+---+---+---+---+---+
|   | 1 | 2 | 3 | 4 | 5 |
+---+---+---+---+---+---+
| A |   | x | x | x |   |
+---+---+---+---+---+---+
| B | x |   | x |   |   |
+---+---+---+---+---+---+
| C |   |   |   | x | x |
+---+---+---+---+---+---+

其中每行表示一种故障原因, 每一列表示一种故障现象。该矩阵表示故障 原因 AA 可能产生故障现象 2、3、4, 故障原因 BB 可能产生故障现象 1、3。

在实际开发过程中, 如果出现了故障原因, 工程师就可以根据故障现象, 去计算每种故障原因产生的概率, 并按照概率大小对故障原因进行排查, 以达 到快速定位故障原因的目的。

现在, 我们假设系统开发中同一时间只会出现一种故障原因, 并且故障原 因引起各故障现象是独立事件。举个例子来说:

假设系统现在发生了故障原因 AA, 有 13\frac{1}{3} 的概率出现故障现象 2 , 有 14\frac{1}{4} 的概 率出现故障现象 3 , 有 12\frac{1}{2} 的概率出现故障现象 4。由于 3 种现象是独立发生的, 因此有 12×3×4\frac{1}{2 \times 3 \times 4} 的概率同时出现故障 2、3、4。

约定若相关性矩阵中没有 'xx' 记号, 则表示该故障原因一定不会产生某故 障现象, 比如故障原因 AA, 一定不会产生故障现象 1。

根据历史经验数据, 我们统计得到了每一种故障原因出现的概率以及每一 种故障原因对应的故障现象产生概率。

现在已知系统出现的故障现象, 求问各个故障原因发生的概率。

输入格式

11 行: 22 个正整数 N,MN, MNN 表示故障原因的个数(编号 1N1 \ldots N ), MM 表示故障现象的个数 (编号 1M1 \ldots M)

22 行: NN 个整数, 第 ii 个数表示故障原因 ii 产生的概率 PiP_i.

3N+23 \ldots N+2 行: 每行 MM 个整数, 第 i+2i+2 行第 jj 个整数 PijP_{ij}​ 表示故障原 因 ii 出现故障现象 jj 的概率 (百分比).

N+3N+3 行: 1 个正整数 KK, 表示目前出现的故障现象数量

N+4N+4 行: KK 个正整数, 依次为当前出现的故障现象编号, 不会重复

输出格式

1N1 \ldots N 行: 按概率从高到低输出每种故障原因及其可能的概率, 若出现 概率相同则优先输出编号小的故障原因。第 1 个数为故障原因编号, 第 2 个数 为故障概率 (百分比), 保留 2 位小数。

3 5
30 20 50
0 50 33 25 0
30 0 35 0 0
0 0 0 25 60
1
3
2 56.89
1 43.11
3 0.00

评测用例规模与约定

对于所有测试用例, $1 \leq N \leq 40,1 \leq M \leq 20,0 \leq P_i \leq 100, \Sigma P_i=100$,