Pagini recente » Cod sursa (job #654654) | Cod sursa (job #1871035) | Cod sursa (job #2854138) | Cod sursa (job #2262912) | Cod sursa (job #1472651)
#include <iostream>
#include <fstream>
#include <values.h>
#define MOD(x) ((x)>0?(x):(-x))
using namespace std;
const int Max = 17;
int board[Max][Max] , max_sum = 0 , n , m ;
int change[Max] = {1};
void computeSum(){
int aux[Max][Max] , S = 0;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j)
aux[i][j] = change[i] * board[i][j];
for (int j = 1; j <= m; ++j){
int s=0;
for (int i = 1; i <= n; ++i)
s += aux[i][j];
S += MOD(s);
}
if (S > max_sum)
max_sum = S;
}
void backtrack(int level){
if (level > n){
computeSum();
return;
}
change[level] = -1;
backtrack(level + 1);
change[level] = 1;
backtrack(level + 1);
}
int main(){
ifstream fin("flip.in");
ofstream fout("flip.out");
fin >> n >> m;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j)
fin >> board[i][j];
fin.close();
backtrack(1);
fout << max_sum << endl;
fout.close();
return 0;
}