Pagini recente » Cod sursa (job #1802468) | Cod sursa (job #2572955) | Cod sursa (job #804455) | Cod sursa (job #664742) | Cod sursa (job #1488657)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
int v[16][16];
int n, m;
void flipy(int col)
{
for(int i = 0; i < n; i++)
v[i][col] *=-1;
}
void flipx(int line)
{
for(int j = 0; j < m; j++)
v[line][j] *= -1;
}
int sum()
{
int s= 0;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
s+=v[i][j];
return s;
}
int abs(int n)
{
if(n < 0) return -1*n;
return n;
}
bool checkCols()
{
bool hasFlipped = false;
int SumP, SumN;
for(int j = 0; j < m; j++)
{
SumP = 0;
SumN = 0;
for(int i = 0; i < n; i++)
{
if(v[i][j] >= 0) SumP+=v[i][j];
else SumN+=v[i][j];
}
if(abs(SumN)>SumP)
{
hasFlipped=true;
flipy(j);
}
}
return hasFlipped;
}
bool checkLines()
{
bool hasFlipped = false;
int SumP, SumN;
for(int i = 0; i < n; i++)
{
SumP=0;
SumN=0;
for(int j = 0; j < m; j++)
{
if(v[i][j] >= 0) SumP+=v[i][j];
else SumN+=v[i][j];
}
if(abs(SumN)>SumP)
{
hasFlipped=true;
flipx(i);
}
}
return hasFlipped;
}
int main()
{
in >> n >> m;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
in>>v[i][j];
bool c = checkCols();
bool l = checkLines();
while(c || l)
{
c = checkCols();
l = checkLines();
}
out << sum();
return 0;
}