Pagini recente » Cod sursa (job #865878) | Cod sursa (job #131986) | Cod sursa (job #328443) | Cod sursa (job #2292558) | Cod sursa (job #711612)
Cod sursa(job #711612)
#include <cstdio>
#include <iostream>
#include <algorithm>
#define LE 4000
#define FOR for(i=1;i<=n;++i) for(j=1;j<=m;++j)
using namespace std;
int i,j,m,n,MAX=-1000000,S[LE],SE[LE],semn[LE],nrl,nrc;
short int a[LE][LE],M[LE][LE];
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;
}