Pagini recente » Cod sursa (job #2938623) | Cod sursa (job #2769685) | Cod sursa (job #2590290) | Cod sursa (job #411001) | Cod sursa (job #215986)
Cod sursa(job #215986)
#include <stdio.h>
int N,M,AN,B[18];
long A[18][18];
int max (int a1,int a2)
{
return a1 > a2 ? a1 : a2;
}
int sum()
{
int s = 0;
for(int i = 1;i <= M; ++i)
{
if (B[i])
{
for(int j = 1;j <= N; ++j)
A[j][i] *= -1;
}
}
for (int i=0;i<= N; ++i)
{
int sc = 0;
for (int j=0; j<=M ; ++j)
sc += A[i][j];
if (sc < 0) sc = -sc;
s += sc;
}
for(int i = 1;i <= M; ++i)
{
if (B[i])
{
for(int j = 1;j <= N; ++j)
A[j][i] *= -1;
}
}
return s;
}
void col(int poz)
{
if (poz > M) AN = max(sum() , AN);
else
for (B[poz] = 0; B[poz]<=1; ++B[poz])
col(poz+1);
}
int main()
{
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
scanf("%d %d",&N, &M);
int i,j;
for (i = 1 ; i <= N ; ++i)
for (j = 1 ; j <= M ; ++j)
scanf("%d ",&A[i][j]);
col(1);
printf("%d\n",AN);
return 0;
}