Pagini recente » Cod sursa (job #1684832) | Cod sursa (job #1521854) | Cod sursa (job #1187278) | Cod sursa (job #1007262) | Cod sursa (job #1019993)
#include <cstdio>
#include <algorithm>
using namespace std;
int L,C,nrl,nrc,a[20][600],b[600][600],s[600],t[600],maxim,st[50];
inline void Read()
{
int i,j;
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;
}
else
for(i=1;i<=L;i++)
for(j=1;j<=C;j++)
a[i][j]=b[i][j];
}
inline void Sume()
{
int i,j;
for(i=1;i<=L;i++)
for(j=1;j<=C;j++)
s[j]=s[j]+a[i][j];
}
inline 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);
}
inline 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);
Read();
Sume();
if(nrl)
Back(1);
else
{
sort(s+1,s+C+1);
int suma=0;
for(int i=nrc+1;i<=C;i++)
suma+=s[i];
maxim=max(maxim, suma);
}
printf("%d\n", maxim);
return 0;
}