Pagini recente » Cod sursa (job #2638885) | Cod sursa (job #1863004) | Cod sursa (job #2665165) | Profil XXXTENTACION | Cod sursa (job #1490437)
#include<stdio.h>
using namespace std;
const int N = 18;
int mat[N][N], n, m, col[N], maxim = -10000000;
FILE *in = fopen ("flip.in", "r"),
*out = fopen ("flip.out", "w");
void bkt(int poz)
{
int i, j, c, s = 0;
for (i = poz; i <= n; i++)
{
s = 0;
for (j = 1; j <= m; j++)
{
mat[i][j] *= -1;
col[j] += mat[i][j] * 2;
}
for (j = 1; j <= m; j++)
if (col[j] < 0)
for (c = 1; c <= n; c++)
{
mat[c][j] *= -1;
col[j] *= -1;
}
for (j = 1; j <= n; j++)
for (c = 1; c <= m; c++)
s += mat[j][c];
if (s > maxim)
maxim = s;
bkt(poz + 1);/*
for (j = 1; j <= n; j++)
{
for (c = 1; c <= m; c++)
fprintf (out, "%d", mat[j][c]);
fprintf (out, "\n");
}*/
for (j = 1; j <= m; j++)
{
mat[i][j] *= -1;
col[j] += mat[i][j] * 2;
}
}
}
int main ()
{
fscanf (in, "%d%d", &n, &m);
int i, j, s = 0;
for (i = 1; i <= n; i++)
{
s = 0;
for (j = 1; j <= m; j++)
{
fscanf (in, "%d", &mat[i][j]);
}
}
for (i = 1; i <= m; i++)
{
s = 0;
for (j = 1; j <= n; j++)
s += mat[j][i];
col[i] = s;
}
bkt(3);
fprintf (out, "%d", maxim);
return 0;
}