Pagini recente » Cod sursa (job #343481) | Cod sursa (job #3233147) | Cod sursa (job #2598298) | Cod sursa (job #2585290) | Cod sursa (job #1072363)
#include <cstdio>
#include <algorithm>
using namespace std;
int L,C,nrl,nrc;
int a[20][600];
int b[600][600];
int s[7000];
int t[7000];
int st[50];
int maxim,i,j,suma=0;
void Stergere()
{
int i,j,suma;
for(j=1;j<=C;j++)
{
t[j]=s[j];
for(i=1;i<=nrl;i++)
t[j]-=a[st[i]][j];
}
sort(t+1,t+C+1);
suma=0;
for(i=nrc+1;i<=C;i++)
suma+=t[i];
maxim=max(maxim, suma);
}
void Back(int k)
{
if(k-1==nrl)
Stergere();
else
{
for(int i=st[k-1]+1;i<=L;i++)
{
st[k]=i;
Back(k+1);
}
}
}
int main()
{
freopen ("elimin.in","r",stdin);
freopen ("elimin.out","w",stdout);
scanf("%d%d%d%d", &L,&C,&nrl,&nrc);
for(i=1;i<=L;i++)
for(j=1;j<=C;j++)
scanf("%d", &b[i][j]);
if(L>C)
{
for(i=1;i<=L;i++)
for(j=1;j<=C;j++)
a[j][i]=b[i][j];
i=L;
L=C;
C=i;
i=nrl;
nrl=nrc;
nrc=i;
}
else
for(i=1;i<=L;i++)
for(j=1;j<=C;j++)
a[i][j]=b[i][j];
for(i=1;i<=L;i++)
for(j=1;j<=C;j++)
s[j]=s[j]+a[i][j];
if(nrl)
Back(1);
else
{
sort(s+1,s+C+1);
for(i=nrc+1;i<=C;i++)
suma+=s[i];
maxim=max(maxim, suma);
}
printf("%d\n", maxim);
return 0;
}