Pagini recente » Cod sursa (job #1793003) | Cod sursa (job #779710) | Cod sursa (job #1931661) | Cod sursa (job #1387578) | Cod sursa (job #1075409)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define nmax 7295
int n, m, nl, nc, aux, i, j, st, rez, nr1, poz, conf, cmax, x, nb;
bool sch;
int s[nmax], p2[nmax];
int a[nmax][nmax];
void citire()
{
scanf("%ld %ld %ld %ld",&n,&m,&nl,&nc);
if (n<m)
sch=1;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
if (!sch)
scanf("%ld",&a[i][j]);
else
scanf("%ld",&a[j][i]);
}
if(sch)
{
aux=n; n=m; m=aux;
aux=nl; nl=nc; nc=aux;
}
}
void rezolvare()
{
for (i=1;i<=n;i++)
{
s[i]=0;
for (j=1;j<=m;j++)
if ((p2[j]&conf)==0)
s[i]+=a[i][j];
}
sort(s+1,s+1+n);
st=0;
for (i=n;i>nl;i--)
st+=s[i];
if (st>rez)
rez=st;
}
void gen()
{
p2[0]=1;
for (i=1;i<=m+1;i++)
p2[i]=p2[i-1]<<1;
cmax=p2[m+1]-1;
for (conf=0;conf<=cmax;conf+=2)
{
x=conf; nb=0;
while (x>0)
{ x=x&(x-1); nb++; }
if (nb==nc)
rezolvare();
}
}
int main()
{
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
citire();
rez=-1;
gen();
printf("%ld",rez);
return 0;
}