Pagini recente » Cod sursa (job #240267) | Cod sursa (job #1487298) | Cod sursa (job #197535) | Cod sursa (job #2905257) | Cod sursa (job #494136)
Cod sursa(job #494136)
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define maxim(a,b) (a>b ? a : b)
int n,m,l,c,v[905],sol;
int a[23][905],viz[905];
void actual()
{
int i,j;
memset(v,0,sizeof(v));
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(!viz[j])
v[i]+=a[j][i];
sort(v+1,v+m+1);
int sc=0;
for(i=m;i>c;i--)
sc+=v[i];
sol=maxim(sol,sc);
}
void back(int poz,int ales)
{
if(ales>l)
return ;
if(poz==n+1)
{
if(ales==l)
actual();
return ;
}
back(poz+1,ales);
viz[poz]=1;
back(poz+1,ales+1);
viz[poz]=0;
}
int main ()
{
int i,j,aux;
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&l,&c);
if(m<n)
{
for(j=1;j<=n;j++)
for(i=1;i<=m;i++)
scanf("%d",&a[i][j]);
aux=m;
m=n;
n=aux;
aux=l;
l=c;
c=aux;
}
else
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
scanf("%d",&a[i][j]);
back(1,0);
printf("%d\n",sol);
return 0;
}