Pagini recente » Cod sursa (job #714299) | Cod sursa (job #2851904) | Cod sursa (job #351255) | Cod sursa (job #603188) | Cod sursa (job #2760902)
#include <fstream>
using namespace std;
int mat[20][20], v[25];
int sumcol[25], sumcolinv[25];
int main()
{
ifstream fin("flip.in");
ofstream fout("flip.out");
int n, m, i, j, l, c, max1 = 0, put2 = 1;
fin >> n >> m;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= m; j++)
{
fin >> mat[i][j];
}
}
for (i = 1; i <= n; i++)
{
put2 *= 2;
}
put2--; int pas, poz, ci, sum;
for (i = 0; i <= put2; i++)
{
pas = 1; poz = 1; ci = i; sum = 0;
for (j = 0; j <= 20; j++)
{
v[j] = sumcol[j] = sumcolinv[j] = 0;
}
while (ci > 0)
{
if (ci & 1)
{
v[pas] = 1;
poz++;
}
pas++;
ci /= 2;
}
for (l = 1; l <= n; l++)
{
if (v[l] == 1)
{
for (c = 1; c <= m; c++)
{
sum += -1 * mat[l][c];
sumcol[c] += -1 * mat[l][c];
sumcolinv[c] += mat[l][c];
}
}
else
{
for (c = 1; c <= m; c++)
{
sum += mat[l][c];
sumcol[c] += mat[l][c];
sumcolinv[c] += -1 * mat[l][c];
}
}
}
for (j = 1; j <= m; j++)
{
if (sum - sumcol[j] + sumcolinv[j] > sum)
{
sum -= sumcol[j];
sum += sumcolinv[j];
}
}
if (sum > max1)
{
max1 = sum;
}
}
fout << max1 << '\n';
return 0;
}