Pagini recente » Cod sursa (job #727517) | Cod sursa (job #934617) | Cod sursa (job #1660549) | Cod sursa (job #304615) | Cod sursa (job #1439324)
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int a[20][20];
int n, m, i, j, I, J, k, l, s, sDoarC, sCplusL;
int maxim = -2147483647;
int main()
{
f >> n >> m;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
{
f >> a[i][j];
s += a[i][j];
if (a[i][j] < 0) a[n+1][j] += a[i][j], a[i][m+1] += a[i][j];
else a[n+2][j] += a[i][j], a[i][m+2] += a[i][j];
}
k = (1 << n), l = (1 << m);
for (i = 1; i < k; i++)
{
sDoarC = s;
for (j = 0; j < n; j++)
if ((i & (1 << j)) && ((-a[n+1][j+1]) > a[n+2][j+1]))
sDoarC -= 2*(a[n+2][j+1] + a[n+1][j+1]);
for (I = 1; I < l; I++)
{
sCplusL = sDoarC;
for (J = 0; J < m; J++)
if ((I & (1 << J)) && (-a[J+1][m+1] > a[J+1][m+2]))
sCplusL -= 2*(a[J+1][m+1] + a[J+1][m+2]);
}
if (sCplusL > maxim)
maxim = sCplusL;
}
g << maxim;
}