#abc215h. [abc215_h]Cabbage Master

[abc215_h]Cabbage Master

问题描述

Takahashi是一位种植卷心菜的农民,他种了NN个品牌的卷心菜,分别称为Brand 11到Brand NN。他有AiA_i颗Brand ii的卷心菜(1iN)(1 \leq i \leq N)。这里要注意:所有的卷心菜都是可区分的

他有MM个客户,分别称为Company 11到Company MM。Company jj (1jM)(1 \leq j \leq M) 订购了BjB_j颗卷心菜。

不同的公司接受不同品牌的卷心菜。对于每一对i,ji, j (1iN,1jM)(1 \leq i \leq N, 1 \leq j \leq M)

  • 如果ci,j=1c_{i, j} = 1,表示Brand ii的卷心菜可以发货给Company jj
  • 如果ci,j=0c_{i, j} = 0,表示Brand ii的卷心菜无法发货给Company jj

如果Takahashi成功决定发往哪个公司的卷心菜,以至于每个公司jj (1jM)(1 \leq j \leq M)至少收到BjB_j颗卷心菜,那么他将被称为Cabbage Master。

Snuke决定选择吃掉零颗或多颗卷心菜,以便无论Takahashi把卷心菜发往何处,他都无法获得Cabbage Master的称号。因为他不太喜欢卷心菜,所以他会选择吃掉最少数量的卷心菜,以达到他的目标。

输出Snuke将吃掉的卷心菜数量,并且Snuke选择吃掉卷心菜的方式有多少种(对998244353取模)。当两种选择吃掉卷心菜的方式在某个卷心菜头被其中一种方式吃掉而另一种方式没有吃掉时,两种方式被认为是不同的。记住,即使它们是相同品牌的,任意两颗卷心菜都是可区分的

约束条件

  • 1N201 \leq N \leq 20
  • 1M1041 \leq M \leq 10^4
  • 1Ai1051 \leq A_i \leq 10^5
  • 1Bj1051 \leq B_j \leq 10^5
  • ci,j{0,1}c_{i, j} \in \lbrace 0, 1 \rbrace
  • 对于每个1jM1 \leq j \leq M,存在1iN1 \leq i \leq N使得ci,j=1c_{i, j} = 1
  • 输入中的所有值都是整数。

输入格式

输入的格式如下,从标准输入中获取:

NN MM A1A_1 A2A_2 \ldots ANA_N B1B_1 B2B_2 \ldots BMB_M c1,1c_{1, 1} c1,2c_{1, 2} \ldots c1,Mc_{1, M} c2,1c_{2, 1} c2,2c_{2, 2} \ldots c2,Mc_{2, M} \vdots cN,1c_{N, 1} cN,2c_{N, 2} \ldots cN,Mc_{N, M}

输出格式

按顺序用空格隔开,输出XX(Snuke将吃掉的卷心菜数量)和YY(Snuke选择吃掉卷心菜的方式的数量,对998244353取模)。

XX YY

示例输入1

3 2
2 2 5
3 4
1 0
1 1
0 1

示例输出1

2 6

Snuke将吃掉两颗卷心菜,以阻止Takahashi成为Cabbage Master。有六种方式可以选择要吃掉的卷心菜,如下所示,其中(i,j)(i, j)表示Brand ii的第jj个卷心菜。

  • (1,1),(1,2)(1, 1), (1, 2)
  • (1,1),(2,1)(1, 1), (2, 1)
  • (1,1),(2,2)(1, 1), (2, 2)
  • (1,2),(2,1)(1, 2), (2, 1)
  • (1,2),(2,2)(1, 2), (2, 2)
  • (2,1),(2,2)(2, 1), (2, 2)

示例输入2

1 1
3
4
1

示例输出2

0 1

即使Snuke不吃任何卷心菜,Takahashi也可能无法成为Cabbage Master。然后,Snuke将不吃任何卷心菜,他可以选择其方式只有一种:什么都不吃。

示例输入3

1 3
100
30 30 30
1 1 1

示例输出3

11 892328666

对于Snuke选择要吃掉的卷心菜的方式的数量,一定要对998244353998244353取模。