海盗船长 Jack 带领他的船员们开始了一年一度的财宝分割大会,这是海盗们万众瞩目的一次会议,关系到海盗们年底能分得多少财宝。
经过了喋喋不休的一天争论, Jack 设计出了一个大家都公认的最公平的分割方案。
由 Jack 船长,将所有的要分割的财宝,放到一个 R 行 C 列 ( 1\leq R,C\leq 500) 的矩阵中,矩阵中的第 i 行,第 j 列格子中的财宝金额为 Aij(1≤Aij≤4000)。
接下来由海盗们选举的最有公信力的成员 Davy 将财宝分割为 X \times Y 块,分给所有的海盗(海盗人数恰好是 X \times Y )。
分割方式为:先水平的在矩阵上画 X-1 条不重复的分割线(沿整数坐标切割),把财宝分割为 X 行。再把每一行独立的画 Y-1 条不重复的分割线(沿整数坐标切割),从而把每一行的财宝分割成 Y 份。
虽然 Davy 是公认的对大家都很公平的人,但是为了防止 Davy 有私心,想要给自己多留, Davy 只能等大家都选完之后,要最后一份。
可怜的 Davy 已经知道自己得到的那份一定不可能比其他海盗得到的更多,请你编程帮助 Davy 计算出,他得到的那份财宝,最多有多少?
例如,下面有一个 5\times4 矩阵,矩阵中每个格子的财宝金额如下:
1 2 2 1
3 1 1 1
2 1 1 3
1 1 1 1
1 1 1 1
将财宝先画 3 条横线切割为 4 行,再将每行画 1 条纵向的线,切割成 2 份,就可以将财宝分成8份。
1 2 | 2 1
---------
3 | 1 1 1
---------
2 1 | 1 3
---------
1 1 | 1 1
1 1 | 1 1
Davy 可以得到一份金额为 3 的财宝。
第 1 行读入 4 个整数:R,C,X,Y,含义如题目所述,整数之间用空格隔开。
接下来 R 行,每行有 C 个整数,每个整数代表了初始状态下,矩阵中一份财宝的金额。
输出一个整数,代表 Davy 能得到的那份财宝的最大值。
5 4 4 2 1 2 2 1 3 1 1 1 2 1 1 3 1 1 1 1 1 1 1 1
3
7 8 1 2 768 325 13 315 31 85 136 256 358 89 325 301 366 260 134 17 342 372 114 219 174 283 20 391 227 296 176 29 173 193 357 213 325 337 335 389 276 1471 41 102 374 235 314 236 5 147 210 323 160 334 5 22 371 303 292 321
6951
9 9 1 2 93 510 2926 3983 2185 213 661 348 176 207 2312 961 951 3359 957 1140 2510 337 962 3702 1393 298 2900 1763 1985 1906 171 269 2200 2768 3537 1860 2933 3860 3921 665 1812 1979 1040 867 2722 1358 158 3938 139 3372 2769 2753 3301 2378 2714 1921 3289 322 1431 2772 1247 646 2346 2855 835 1286 3338 124 1141 1203 344 2231 2372 3123 3061 190 1038 761 242 1831 630 3406 1576 3142 204
62773
对于 20\% 的数据,4≤R,C≤10,X=1,Y=2。
对于 50\% 的数据,4≤R,C≤10,2≤X≤R,2≤Y≤C。
对于 100\% 的数据,4≤R,C≤500,2≤X≤R,2≤Y≤C,1≤Aij≤4000。