Felicia Day 喜欢玩 DnD。为此,她需要各种各样的骰子,在本题中是 $N$ 面骰子。她喜欢冒险,为了省钱,她购买了 $K$ 个打折的骰子。然而,她发现并非所有骰子都是公平的(如果一个骰子每一面出现的概率相等,则称其为公平的)。更准确地说,每个骰子是公平的概率为 $P$,如果它不公平,则每一面出现的概率按以下方式生成:
- 对于 $i$ 从 1 到 $N$,生成一个 0 到 1 之间的随机数,记为 $Q_i$。
- 出现第 $i$ 面的概率等于 $\frac{Q_i}{Q_1 + Q_2 + \dots + Q_N}$。
我们可以认为公平的骰子是所有 $Q_i$ 值相等的特殊情况。
Felicia 急于分辨哪些骰子是公平的,哪些是不公平的,但她没有太多时间,因此她将每个骰子投掷了 $M$ 次。她记录了结果——每个骰子每一面出现的次数,但她不确定如何分析这些数据。请编写一个程序来帮助她将骰子分类为公平或不公平。当然,不要求 100% 的准确率。相反,每种错误都有相应的惩罚:如果你将一个公平的骰子分类为不公平,惩罚为 $X$,而如果你将一个不公平的骰子分类为公平,惩罚为 $Y$。你的目标是最小化总的错误惩罚。
数据范围
- $2 \le N \le 8$
- $15 \le M \le 40$
- $0.5 \le P \le 0.8$
- $0.3 \le X, Y \le 0.7$
- $X + Y = 1$
- $K = 100000$
输入格式
第一行输入 $N, M, P, X$ 和 $Y$。下一行输入 $K$。接下来的 $K$ 行,每行输入 $N$ 个整数,其中第 $i$ 行的第 $j$ 个数是骰子 $i$ 的第 $j$ 面出现的次数。
输出格式
在标准输出中,为每个骰子单独占一行输出 ‘1’ 将其分类为公平,或输出 ‘0’ 将其分类为不公平。
子任务
每个测试点单独评分。给定测试点的得分计算方式如下:
- 令 $TP$ 为你的解法产生的总错误惩罚。
- $AP = \frac{TP}{K}$
- $BAP = \min(P \times X, (1 - P) \times Y)$
- $S = \max\left(\frac{BAP - AP}{BAP}, 0\right)$
- $R = \frac{S}{S_{Author}}$
- 你的得分为: $$ \begin{cases} 0.3 + 0.7 \times \left(1 - \left(1 - \frac{R - 0.8}{1 - 0.8}\right)^{0.75}\right) & \text{如果 } R \ge 0.8 \\ \frac{0.3}{0.8} \times R & \text{如果 } R < 0.8 \end{cases} $$
样例
输入 1
3 15 0.6 0.35 0.65 4 4 7 4 5 5 5 9 5 1 3 6 6
输出 1
0 1 0 1
说明 1
结果显示,该解法正确识别了第 2 和第 3 个骰子,但对第 1 和第 4 个骰子识别错误。第一个错误带来的惩罚是 0.35,第二个是 0.65。总惩罚为 1.0。