Cod sursa(job #2079951)

Utilizator IulianBobocBoboc Iulian IulianBoboc Data 2 decembrie 2017 02:30:36
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#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;
}