Pagini recente » Cod sursa (job #2595795) | Cod sursa (job #589222) | Cod sursa (job #2547423) | Cod sursa (job #809368) | Cod sursa (job #1066455)
#include <stdio.h>
using namespace std;
FILE*f=fopen("flip.in","r");
FILE*g=fopen("flip.out","w");
int a[30][30],nrsub1,nrsub2,n,m,smax,s,i,j,k,l,b[30][30],lung1,lung2,v1[66000],v2[66000];
void tc(int x)
{
for (short int i=1;i<=n;i++)
{
a[i][x]*=-1;
}
}
void tl(int x)
{
for (short int i=1;i<=m;i++)
{
a[x][i]*=-1;
}
}
void sum()
{
for (short int i=1;i<=n;i++)
{
for (short int j=1;j<=n;j++)
{
s+=a[i][j];
}
}
}
int main()
{
fscanf(f,"%d%d",&n,&m);
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
{
fscanf(f,"%d",&a[i][j]);
b[i][j]=a[i][j];
}
}
nrsub1=1<<m;
nrsub2=1<<n;
for (i=1;i<nrsub1;i++)
{
lung1=0;
for (j=1;j<=m;j++)
{
if (i&(1<<(j-1)))
{
tc(j);
lung1++;
v1[lung1]=j;
}
}
for (k=1;k<nrsub2;k++)
{
s=0; lung2=0;
for (l=1;l<=n;l++)
{
if (k&(1<<(l-1)))
{
tl(l);
lung2++;
v2[lung2]=l;
}
}
sum();
for (j=1;j<=lung2;j++)
{
tl(v2[j]);
}
if (s>smax) smax=s;
}
for (j=1;j<=lung1;j++)
{
tc(v1[j]);
}
}
fprintf(g,"%d",smax);
return 0;
}