题目描述
给出 $n,k$ 和 $n$ 个整数 $a_1\sim a_n$,对 $\{a_1,a_2,\dots,a_n\}$ 的每一个子集解决下面的问题,然后把答案求和,对 $10^9+7$ 取模:
从这个集合中选出恰好 $k$ 个数,最大乘积是多少?(如果集合内数的个数小于 $k$,认为最大乘积是 $\color{red}0$)
注意,要求的是最大值取模后的结果,不是取模后的最大值。
输入格式
第一行两个正整数 $n,k$。
接下来一行 $n$ 个整数 $a_1\sim a_n$。
输出格式
一行一个整数,为答案对 $10^9+7$ 取模的值。
样例
样例输入 1
10 1 -2 -9 -7 -4 -5 4 -3 2 -8 5
样例输出 1
3459
样例输入 2
7 3 1 -2 3 -4 5 -6 7
样例输出 2
5828
样例输入 3
10 5 0 -2 0 -4 5 -6 7 8 -4 6
样例输出 3
1114688
样例输入 4
15 5 0 0 2 -2 2 -2 3 -3 -3 4 5 -4 -4 4 5
样例输出 4
18119684
数据范围
本题捆绑测试。
对于所有数据,$1\le k\le n\le 600$,$-10^9\le a_i\le 10^9$。详细数据范围如下表:
Subtask 编号 | $n$ | 特殊性质 | 分数 |
---|---|---|---|
$1$ | $\le 15$ | 无 | $5$ |
$2$ | $\le 200$ | $a_i>0$ | $15$ |
$3$ | $\le 50$ | $k\le 2$ | $17$ |
$4$ | $\le 50$ | $a_i$ 在 $[-10^9,10^9]$ 均匀随机生成 | $26$ |
$5$ | $\le 80$ | $a_i$ 在 $[-10^9,10^9]$ 均匀随机生成 | $10$ |
$6$ | $\le 220$ | 无 | $14$ |
$7$ | $\le 600$ | 无 | $13$ |