#include<bits/stdc++.h>
using namespace std;
#define N 510
int d[N][N];
int f[N][N];
int s[N][N];
int n[N];
int num[N];
int daoa[N];
int suma[N];
int numa=0,numb=0;
int main()
{
int r,c,a,b;
scanf("%d%d%d%d",&r,&c,&a,&b);
for(int i=1; i<=r; i++) {
for(int j=1; j<=c; j++) {
scanf("%d",&d[i][j]);
f[i][j]=f[i][j-1]+d[i][j];
}
}
for(int i=1; i<=r; i++) {
num[i]=1;
for(int j=1; j<=r; j++) {
if(f[j][c]>f[i][c])
num[i]++;
}
}
int sum=0;
for(int i=1; i<=a-1; i++) {
int pd=0;
for(int j=2; j<=r-1; j++) {
if(sum==a-1) {
pd=1;
break;
}
if(num[j]==i) {
if(j==1 || j==r) {
if(j==1 && daoa[1]==0)
daoa[1]=1,sum++;
if(sum==a-1) {
pd=1;
break;
}
if(j==r && daoa[r-1]==0)
daoa[r-1]=1,sum++;
if(sum==a-1) {
pd=1;
break;
}
} else {
if(daoa[j-1]==0)
daoa[j-1]=1,sum++;
if(sum==a-1) {
pd=1;
break;
}
if(daoa[j+1]==0)
daoa[j+1]=1,sum++;
if(sum==a-1) {
pd=1;
break;
}
}
}
}
if(pd==0)
break;
}
memset(s,0,sizeof(s));
int num1=0;
suma[++num1]=f[1][c];
for(int i=1; i<=c; i++)
s[num1][i]+=d[1][i];
// for(int i=1;i<=num1;i++)
// {
// for(int j=1;j<=c;j++)
// printf("%d ",s[i][j]);
// printf("\n");
// }
// printf("________________\n");
for(int i=1; i<=r-1; i++) {
if(daoa[i]==0) {
suma[num1]+=f[i+1][c];
for(int j=1; j<=c; j++)
s[num1][j]+=d[i+1][j];
} else {
suma[++num1]+=f[i+1][c];
for(int j=1; j<=c; j++)
s[num1][j]+=d[i+1][j];
}
// for(int i=1;i<=num1;i++)
// {
// for(int j=1;j<=c;j++)
// printf("%d ",s[i][j]);
// printf("\n");
// }
// printf("________________\n");
}
if(b==1) {
int minn=INT_MAX;
for(int i=1; i<=num1; i++) {
if(suma[i]<minn)
minn=suma[i];
}
printf("%d\n",minn);
return 0;
}
int minn=INT_MAX;
for(int i=1; i<=num1; i++) {
double e=suma[i]*1.0/b;
int sumx=0;
int h=0;
for(int j=1; j<=c; j++) {
sumx+=s[i][j];
if(j==c)
minn=min(sumx,minn);
else {
if(sumx*1.0>=e) {
minn=min(minn,sumx);
sumx=0;
}
}
}
}
printf("%d",minn);
return 0;
}
调了3个小时 崩溃了