Pagini recente » Cod sursa (job #628233) | Cod sursa (job #3182236) | Cod sursa (job #115488) | Cod sursa (job #1745442) | Cod sursa (job #149985)
Cod sursa(job #149985)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 16
#define MAXM 7300
#include <algorithm>
using namespace std;
int v[MAXM][MAXN];
int sl[MAXM];
int n,m,R=0,C=0,asdf=0;
bool cmp(int x, int y)
{
return x<y;
}
int sumlin(int c)
{
int i,j,t,s=0;
for (i=0; i<m; ++i)
{
for (sl[i]=0,j=0,t=c; j<n; ++j,t=t>>1)
sl[i]+=v[i][j]*(t & 1);
s+=sl[i];
}
sort(sl,sl+m,cmp);
for (i=0; i<R; ++i)
s-=sl[i];
return s;
}
void elimc()
{
int t,k=1<<n,l,i;
for (i=0; i<k; ++i)
{
t=i; l=0;
while (t)
{
l+=t&1;
t=t>>1;
}
if (l==n-C)
{
t=sumlin(i);
if (t>asdf)
asdf=t;
}
}
}
int main()
{
FILE *in = fopen("elimin.in","r");
FILE *out = fopen("elimin.out","w");
int i,j,t;
fscanf(in,"%d%d%d%d",&m,&n,&R,&C);
if (n>MAXN)
{
t=n; n=m; m=t;
t=R; R=C; C=t;
for (i=0; i<n; ++i)
for (j=0; j<m; ++j)
fscanf(in,"%d",&v[j][i]);
}
else
{
for (i=0; i<m; ++i)
for (j=0; j<n; ++j)
fscanf(in,"%d",&v[i][j]);
}
elimc();
fprintf(out,"%d\n",asdf);
fclose(in);
fclose(out);
return 0;
}