Pagini recente » Cod sursa (job #2913835) | Cod sursa (job #2037863) | Cod sursa (job #2009609) | Cod sursa (job #692550) | Cod sursa (job #2816771)
#include <fstream>
#define max(a, b) ((a) > (b) ? (a) : (b))
const char *inputFile = "./flip.in";
const char *outputFile = "./flip.out";
int rows, columns;
int *list;
#define indx(row, column) ((row) * (columns) + (column))
inline int rowSum(const int &row)
{
int sum = 0;
for (int column = 0; column < columns; column++)
sum += list[indx(row, column)];
return sum;
}
inline int toggledRowSum(const int &row)
{
int sum = 0;
for (int column = 0; column < columns; column++)
sum += list[indx(row, column)] * -1;
return sum;
}
inline int columnSum(const int &column)
{
int sum = 0;
for (int row = 0; row < rows; row++)
sum += list[indx(row, column)];
return sum;
}
inline int toggledColumnSum(const int &column)
{
int sum = 0;
for (int row = 0; row < rows; row++)
sum += list[indx(row, column)] * -1;
return sum;
}
inline int solveForRow()
{
int sum = 0;
for (int row = 0; row < rows; row++)
sum += max(rowSum(row), toggledRowSum(row));
return sum;
}
inline int solveForColumn()
{
int sum = 0;
for (int column = 0; column < columns; column++)
sum += max(columnSum(column), toggledColumnSum(column));
return sum;
}
inline int solve() { return max(solveForRow(), solveForColumn()); }
int main()
{
// read data in from
std::ifstream input(inputFile);
input >> rows >> columns;
for (int index = 0; index < rows * columns; index++)
input >> list[index];
// write output data
std::ofstream output(outputFile);
output << solve() << std::endl;
return 0;
}