Pagini recente » Cod sursa (job #1039478) | Cod sursa (job #1732116) | Cod sursa (job #1311313) | Cod sursa (job #437801) | Cod sursa (job #1493964)
#include<stdio.h>
using namespace std;
const int L = 17;
int mat[L][L], n, m;
int stiva[L], c, maxim = -20000000;
void prelucrare()
{
int i, j, sum, s = 0;
for (i = 1; i <= c; i++)
{
for (j = 1; j <= m; j++)
mat[stiva[i]][j] *= -1;
}
for (j = 1; j <= m; j++)
{
sum = 0;
for (i = 1; i <= n; i++)
sum += mat[i][j];
if (sum < 0)
sum *= -1;
s += sum;
}
for (i = 1; i <= c; i++)
{
for (j = 1; j <= m; j++)
mat[stiva[i]][j] *= -1;
}
if (s > maxim)
maxim = s;
}
void bkt(int poz)
{
if (poz <= n)//
{
int i;
for (i = poz; i <= n; i++)
{
stiva[++c] = i;
prelucrare();
bkt(poz + 1);
c--;
}
}
}
int main ()
{
FILE *in, *out;
in = fopen ("flip.in", "r");
out = fopen ("flip.out", "w");
fscanf (in, "%d%d", &n, &m);
int i, j;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
fscanf (in, "%d", &mat[i][j]);
bkt(1);
fprintf (out, "%d", maxim);
return 0;
}