Pagini recente » Cod sursa (job #3039383) | Cod sursa (job #2469054) | Cod sursa (job #46098) | Cod sursa (job #2332921) | Cod sursa (job #2514375)
#include <iostream>
#include <fstream>
#define ll long long
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
const int N = 20;
int n, m, flip;
int mat[N][N];
bool isColumnFlipped(int col)
{
return flip & (1 << col);
}
// return the biggest sum flipping just rows
ll bestLineFlip()
{
ll sum = 0;
for(int i = 0; i < n; i++)
{
ll normalSum = 0;
ll flipedSum = 0;
for(int j = 0; j < m; j++)
if(isColumnFlipped(j))
{
normalSum -= mat[i][j];
flipedSum += mat[i][j];
}
else
{
normalSum += mat[i][j];
flipedSum -= mat[i][j];
}
sum += max(normalSum, flipedSum);
}
return sum;
}
int main()
{
fin >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
fin >> mat[i][j];
// any possible flips for columns
ll sol = 0;
for(flip = 0; flip < (1 << m); flip++)
{
sol = max(sol, bestLineFlip());
}
fout << sol;
return 0;
}