Pagini recente » Cod sursa (job #123727) | Cod sursa (job #2036656) | Cod sursa (job #108599) | Cod sursa (job #2885354) | Cod sursa (job #711595)
Cod sursa(job #711595)
#include <cstdio>
#include <iostream>
#include <algorithm>
#define LE 8000
#define FOR for(i=1;i<=n;++i) for(j=1;j<=m;++j)
using namespace std;
int i,j,m,n,MAX=-10000,S[LE],SE[LE],semn[LE],a[90][LE],M[90][LE],nrl,nrc;
int suma(){
int rez=0,l=0,ok=0;
for(i=1;i<=m;++i) S[i]=0;
for(i=1;i<=n;++i) l=l+1-semn[i];
if (l==nrl)ok=1;
FOR{
M[i][j]=a[i][j];M[i][j]*=semn[i];
S[j]+=M[i][j];
}
sort(S+1,S+m+1);
for(i=nrc+1;i<=m;++i) rez+=S[i];
if (ok==1)MAX=max(rez,MAX);
}
int back(int k){
if(k==n+1) suma();
else {
semn[k]=1,back(k+1);
semn[k]=0,back(k+1);
}
}
int main()
{
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%ld%ld%ld%ld",&n,&m,&nrl,&nrc);
FOR if(n<m) scanf("%ld",&a[i][j]); else scanf("%ld",&a[j][i]);
if (n>m) swap(n,m),swap(nrl,nrc);
back(1);
printf("%ld\n",MAX);
return 0;
}