Pagini recente » Cod sursa (job #114478) | Cod sursa (job #830384) | Cod sursa (job #49380) | Cod sursa (job #1344910) | Cod sursa (job #2559586)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f ("flip.in");
ofstream g ("flip.out");
long long maxim;
int n, m, a[20][20];
bool used[20][20];
void read ()
{
int i, j;
f >> n >> m;
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
{
f >> a[i][j];
maxim += a[i][j];
}
}
}
void invertlin (int linie)
{
int j;
for (j=1; j<=m; j++)
if (!used[linie][j])
a[linie][j] = -a[linie][j];
}
void invertcol (int coloana)
{
int i;
for (i=1; i<=n; i++)
if (!used[i][coloana])
a[i][coloana] = -a[i][coloana];
}
void marcheazalin (int linie, int val)
{
int j;
for (j=1; j<=m; j++)
used[linie][j] = val;
}
void marcheazacol (int coloana, int val)
{
int i;
for (i=1; i<=n; i++)
used[i][coloana] = val;
}
long long getsuma ()
{
long long suma = 0;
int i, j;
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
{
suma += a[i][j];
}
}
return suma;
}
void solve ()
{
int i, j;
long long suma;
for (i=1; i<=n; i++)
{
invertlin(i);
marcheazalin(i, 1);
for (j=1; j<=m; j++)
{
invertcol(j);
marcheazacol(j, 1);
suma = getsuma();
maxim = max(maxim, suma);
invertcol(j);
marcheazacol(j, 0);
}
invertlin(i);
marcheazalin(i, 0);
}
g << maxim;
}
int main()
{
read();
solve();
return 0;
}