Pagini recente » Cod sursa (job #1775825) | Cod sursa (job #2363554) | Cod sursa (job #858685) | Cod sursa (job #1372780) | Cod sursa (job #411316)
Cod sursa(job #411316)
#include<cstdio>
const int N=1<<5;
int a[N][N],v[N],b[N][N];
void baza2(int x)
{
int nr=0;
while (x)
{
nr++;
v[nr]=x&1;
x/=2;
}
}
void init()
{
for (int i=0;i<=16;i++)
v[i]=0;
for (int i=1;i<=16;i++)
for (int j=1;j<=16;j++)
a[i][j]=b[i][j];
}
int main()
{
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
int n,m;
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
{
scanf("%d",&a[i][j]);
b[i][j]=a[i][j];
}
int x=1<<n,smax=1<<31;
smax*=-1;
for (int xx=0;xx<x;xx++)
{
baza2(xx);
for (int i=1;i<=n;i++)
if (v[i])
for (int j=1;j<=m;j++)
a[i][j]*=-1;
for (int j=1;j<=m;j++)
{
int ss=0;
for (int i=1;i<=n;i++)
ss+=a[i][j];
if (ss<0)
for (int i=1;i<=n;i++)
a[i][j]*=-1;
}
int s=0;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
s+=a[i][j];
if (s>smax)
smax=s;
init();
// vectorul v,modificam in functie de 0 si 1 coloanele matricei;
// daca suma este negativa pe linie,modificam linia
}
printf("%d",smax);
return 0;
}