Pagini recente » Cod sursa (job #1294277) | Cod sursa (job #2350951) | Istoria paginii runda/4x4/clasament | Istoria paginii runda/sibiu_contest_oni | Cod sursa (job #2079951)
#include<iostream>
#include<fstream>
using namespace std;
long maxSum = 0;
long N, M, board[16][16];
int sign[16];
void computeSum(){
long sum = 0L;
long result[16] = {0};
for( int i = 0; i < M; i++){
for(int j = 0; j < N; j++){
result[i] = result[i] + board[j][i] * sign[j];
}
}
for(int i=0;i<M;i++){
if(result[i] > 0){
sum = sum + result[i];
}
else{
sum = sum - result[i];
}
}
if(sum > maxSum){
maxSum = sum;
}
}
void backtracking(long position){
if(position == N) computeSum();
else{
sign[position] = 1;
backtracking(position + 1);
sign[position] = -1;
backtracking(position + 1);
}
}
int main(int argc, char **argv)
{
ifstream inFile("flip.in");
ofstream outFile("flip.out");
int i, j;
inFile >> N >> M;
for(i = 0; i < N; ++i)
for(j = 0; j < M; ++j)
inFile >> board[i][j];
backtracking(0);
outFile << maxSum;
inFile.close();
outFile.close();
return 0;
}