Pagini recente » Cod sursa (job #2429834) | Cod sursa (job #1558390) | Cod sursa (job #1499231) | Cod sursa (job #2083572) | Cod sursa (job #150057)
Cod sursa(job #150057)
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define NMAX 551
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[17];
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];
s+=z[i];
}
sort(z+1,z+n+1,cmpf);
for (i=1;i<=ln;++i)
s-=z[i];
if (s>rez)
rez=s;
}
void back(int p, int k)
{
if (p>m) return;
if (k==cl)
sol();
else
{
back(p+1,k);
y[p]=1;
back(p+1,k+1);
y[p]=0;
}
}
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;
}
}
*/