Pagini recente » Cod sursa (job #2811043) | Cod sursa (job #1926580) | Cod sursa (job #1832868) | Cod sursa (job #308031) | Cod sursa (job #490963)
Cod sursa(job #490963)
#include <stdio.h>
#include <algorithm>
using namespace std;
int v[600][600],m,n,r,c,v2[20],v3[600],maxx;
void back(int x,int a)
{
int i,j;
if (x==r+1)
{
for (i=1;i<=n;i++) v3[i]=0;
int s=0;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
v3[j]+=v[i][j]*v2[i];
sort(v3+1,v3+n+1);
for (i=n;i>c;i--) s+=v3[i];
if (s>maxx) maxx=s;
return;
}
for (i=a+1;i<=m-r+x;i++)
{
v2[i]=0;
back(x+1,i);
v2[i]=1;
}
}
int main()
{
int i,j;
for (i=1;i<=19;i++) v2[i]=1;
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%d%d%d%d",&m,&n,&r,&c);
if (m<=n)
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
scanf("%d",&v[i][j]);
else
{
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
scanf("%d",&v[j][i]);
int aux=m;m=n;n=aux;
aux=r;r=c;c=aux;
}
back(1,0);
printf("%d",maxx);
return 0;
}