Pagini recente » Cod sursa (job #288206) | Cod sursa (job #27321) | Cod sursa (job #1159237) | Cod sursa (job #1508988) | Cod sursa (job #150075)
Cod sursa(job #150075)
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define NMAX 512
using namespace std;
int cmpf(int a, int b)
{
return (a<b);
}
int b,z[NMAX],x[NMAX][NMAX],i,j,k,l,a,s,rez,n,m,ln,cl;
char y[16];
void sol()
{
s=0;
for (int i=1;i<=n;++i)
{
z[i]=0;
for (int j=1;j<=m;++j)
if (!y[j])
z[i]+=x[i][j];
}
sort(z+1,z+n+1,cmpf);
for (i=n;i>ln;i--)
s+=z[i];
if (s>rez)
rez=s;
}
void back(int p, int k)
{
if (p>m+1)
return ;
if (k==cl)
sol();
else
if (p<=m)
{
y[p]=1;
back(p+1,k+1);
y[p]=0;
back(p+1,k);
}
}
int main()
{
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&ln,&cl);
rez=-100000;
if (m<=15)
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
scanf("%d",&x[i][j]);
else
{
a=n; n=m; m=a;
a=ln; ln=cl; cl=a;
for (j=1;j<=m;j++)
for (i=1;i<=n;i++)
scanf("%d",&x[i][j]);
}
back(1,0);
printf("%d\n",rez);
return 0;
}
/* a=1;
while (a)
{
a=0;
for (i=1;i<n;i++)
if (z[i]>z[i+1])
{
a=z[i];
z[i]=z[i+1];
z[i+1]=a;
a=1;
}
}
*/