Pagini recente » Cod sursa (job #1949992) | Cod sursa (job #2287225) | Cod sursa (job #2035168) | Cod sursa (job #2069646) | Cod sursa (job #2313731)
#include<bits/stdc++.h>
using namespace std;
const int maxM=35000;
int n,m,r,c;
int l[maxM],L[maxM];
int a[18][35000],sol;
int main()
{
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&r,&c);
if(n<=m)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
}
else
{
swap(n,m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[j][i]);
swap(r,c);
}
for(int j=1;j<=m;j++)
for(int i=1;i<=n;i++)
L[j]+=a[i][j];
int lmask=(1<<n);
for(int mask=0;mask<lmask;mask++)
{
if(__builtin_popcount(mask)==r)
{
for(int i=1;i<=m;i++)
l[i]=L[i];
for(int bit=0;bit<n;bit++)
{
if(mask&(1<<bit))
{
for(int j=1;j<=m;j++)
l[j]-=a[bit+1][j];
}
}
sort(l+1,l+m+1);
int sum=0;
for(int k=c+1;k<=m;k++)
sum=sum+l[k];
sol=max(sol,sum);
}
}
printf("%d\n",sol);
return 0;
}