Cod sursa(job #75559)
#include <fstream>
#include <vector>
using namespace std;
int m,n,interm,spoz=0,sneg=0;
void comutaLin(vector<int> &v, int lin)
{ for (int i=0;i<n;i++)
v[lin*n+i]=-v[lin*n+i];
}
void comutaCol(vector<int> &v, int col)
{ for (int i=0;i<m;i++)
v[col+n*i]=-v[col+n*i];
}
void processLines(vector<int> &vec)
{ int index=-1;
for (int i=0;i<m;i++)
{for (int j=0;j<n;j++)
{index++;
if (vec[index]>=0) spoz+=vec[index];
else sneg+=vec[index];
}
if (-sneg > spoz) comutaLin(vec,i);
spoz=0;sneg=0;
}
}
void processColumns(vector<int> &vec)
{ int index;
spoz=0;sneg=0;
for (int i=0;i<n;i++)
{index=i;
for (int j=0;j<m;j++)
{if (vec[index]>=0) spoz+=vec[index];
else sneg+=vec[index];
index+=n;
}
if (-sneg > spoz) comutaCol(vec,i);
spoz=0;sneg=0;
}
}
int main(int argc, char *argv[])
{vector<int> vec;
int suma=0;
ifstream in("flip.in");
in>>m>>n;
for (int i=0;i<m*n;i++)
{ in>>interm;
vec.push_back(interm);}
processLines(vec);
processColumns(vec);
for(int i=0;i<m*n;i++)
suma+=vec[i];
ofstream out("flip.out");
out<<suma;
return 0;
}