Pagini recente » Cod sursa (job #795631) | Cod sursa (job #871954) | Cod sursa (job #731748) | Cod sursa (job #86847) | Cod sursa (job #2030601)
#include<cstdio>
#include<algorithm>
using namespace std;
int ma[1000][2000];
int csum[2000],sum[2000];
int calc(int n)
{
return 1<<n;
}
int main()
{
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
int n,m,i,j,r,c,sumax=0,su,ca,s;
scanf("%d%d%d%d",&n,&m,&r,&c);
if(n>m)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
scanf("%d",&ma[m-j+1][i]);
}
}
m+=n;
n=m-n;
m-=n;
r+=c;
c=r-c;
r-=c;
}
else
{
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
scanf("%d",&ma[i][j]);
}
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
csum[j]+=ma[i][j];
}
}
int pa=calc(n);
for(int a=0;a<=pa-1;a++)
{
ca=a;
s=0;
while(ca)
{
if(ca&1==1)
s++;
ca=ca>>1;
}
if(s==r)
{
for(j=1;j<=m;j++)
{
sum[j]=csum[j];
}
ca=a;
for(i=1;i<=n;i++)
{
if(ca&1==1)
{
for(j=1;j<=m;j++)
{
sum[j]-=ma[i][j];
}
}
ca=ca>>1;
}
sort(sum+1,sum+m+1);
su=0;
for(i=c+1;i<=m;i++)
{
su+=sum[i];
}
if(su>sumax)
sumax=su;
}
}
printf("%d",sumax);
return 0;
}