Cod sursa(job #1472651)

Utilizator HealeruDaniel Guramulta Healeru Data 17 august 2015 14:59:07
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#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;
}