Pagini recente » Cod sursa (job #1960150) | Cod sursa (job #1767931) | Cod sursa (job #1948933) | Cod sursa (job #2010459) | Cod sursa (job #149991)
Cod sursa(job #149991)
#include <stdio.h>
#include <algorithm>
#define MAXM 7300
#define MAXN 16
using namespace std;
int v[MAXM][MAXN];
int sl[MAXM];
int n,m,R=0,C=0;
int 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)
{
sl[i]=0; j=0; t=c;
for (;j<n; ++j,t=t>>1)
sl[i]+=v[i][j]*(t & 1);
}
sort(sl,sl+m,cmp); s=0;
for (i=0; i<m-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)
{
if (t&1)
++l;
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,k,l=0;
char L[7*MAXM];
fscanf(in,"%d%d%d%d",&m,&n,&R,&C);
if (n>=MAXN)
{
j=n; n=m; m=j;
j=R; R=C; C=j;
for (i=0; i<n; ++i)
{
fgets(L,7*MAXM,in); l=0;
for (j=0; j<m; ++j)
{
k=0;
while (L[l]>'9' || L[l]<'0')
l++;
while (L[l]>='0' && L[l]<='9')
k=k*10+(L[l++]-'0');
v[j][i]=k;
}
}
}
else
{
for (i=0; i<m; ++i)
{
fgets(L,7*MAXM,in); l=0;
for (j=0; j<m; ++j)
{
k=0;
while (L[l]>'9' || L[l]<'0')
l++;
while (L[l]>='0' && L[l]<='9')
k=k*10+(L[l++]-'0');
v[i][j]=k;
}
}
}
elimc();
fprintf(out,"%d\n",asdf);
fclose(in);
fclose(out);
return 0;
}