Pagini recente » Cod sursa (job #3277765) | Cod sursa (job #3233700) | Cod sursa (job #1543055) | Cod sursa (job #801160) | Cod sursa (job #3219510)
#include <fstream>
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
int n,m,L,C,x[7300],y[7300],a[7300][7300];
bool frl[7300],frc[7300];
long long Max,sl[7300],sc[7300],total;
long long sol(){
long long s=total;
for(int i=1;i<=n;i++)
if(frl[i])
s-=sl[i];
for(int i=1;i<=m;i++)
if(frc[i])
s-=sc[i];
for(int i=1;i<=L;i++)
for(int j=1;j<=C;j++)
s+=a[x[i]][y[j]];
return s;
}
void coloane(int k){
if(k==C+1){
long long s=sol();
if(s>Max)
Max=s;
}else{
for(int i=y[k-1]+1;i<=m;i++){
y[k]=i;
frc[i]=1;
coloane(k+1);
frc[i]=0;
}
}
}
void lini(int k){
if(k==L+1){
coloane(1);
}else{
for(int i=x[k-1]+1;i<=n;i++){
x[k]=i;
frl[i]=1;
lini(k+1);
frl[i]=0;
}
}
}
int main()
{
cin>>n>>m>>L>>C;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>a[i][j];
sl[i]+=a[i][j];
sc[j]+=a[i][j];
total+=a[i][j];
}
lini(1);
cout<<Max;
return 0;
}