30116 - 西湖有雅座

通过次数

1

提交次数

1

时间限制 : 1 秒
内存限制 : 128 MB

孙亦谐准备建西湖雅座来开饭馆。

他有 n 个零件,零件的大小均为 h \times w。零件从 1 \sim n 编号。

对于一个大小为 h \times w 的零件,其可视为一个 hw 列的矩阵 a。若用

a_{i,j} 来表示这个矩阵中第 i 行第 j 列的元素。对于

\forall a_{i,j},都有

a_{i,j} \in {0, 1}

则编号为 i 的零件的面积为:

S(i) = \sum_{i=1}^{h}

\sum_{j=1}^{w}

a_{i,j}

若编号为 lr 的两个零件分别表示为矩阵 ab,其在同一座楼的稳固程度可表示为:

f(l, r) = \sum_{i=1}^{h}

\sum_{j=1}^{w}

[ (a_{i,j} = 1)

\text{ and }(b_{i,j} = 1) ]

孙亦谐需要将这 n 个零件先选取若干个按照任意顺序排列搭成大楼,然后把剩余的零件搭成小楼。若没有剩余零件,则可以不搭小楼。

U 表示某座楼选取的零件编号的集合,则这座楼能成功搭建的条件是:

\forall i, j \in U, \quad f(i, j) \ge \left\lceil \frac{\min(S(i), S(j))}{2} \right\rceil

孙亦谐想知道在保证两座楼能成功搭建的条件下,让大楼使用的零件数尽量多。若无法成功搭建,则直接输出 -1

输入

第一行输入包含三个正整数 n, h, w,分别表示零件的个数、零件的行数、零件的列数。

接下来输入 n 个零件所表示的矩阵。

对于每个零件的矩阵 a,输入的格式如下:

共输入 h 行,每行 w 个元素。

i 行第 j 列的元素 a_{i,j},表示这个矩阵中第 i 行第 j 列的元素。

输出

输出一个整数,表示在搭建成功的情况下,大楼最多能使用多少个零件。若无法成功搭建,则直接输出 -1

样例

输入

3 2 2
0 1
1 1
1 0
0 0
0 1
0 1

输出

2

输入

3 2 2
0 1
1 0
0 0
0 1
1 0
0 0

输出

-1

提示

样例 1 解释

可以证明最优方案是用第一个零件和第三个零件搭大楼,用第二个零件搭小楼。

数据范围

本题采用捆绑测试

  • Subtask 1(30 points):n \le 20
  • Subtask 2(5 points):w = h = 1
  • Subtask 3(65 points):无特殊限制。

对于所有测试数据,1 \le n \le 10001 \le w, h \le 6