Cod sursa(job #2451027)

Utilizator uvIanisUrsu Ianis Vlad uvIanis Data 25 august 2019 13:51:42
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>
using namespace std;

int matrix[17][17], N, M;

ifstream fin("flip.in");
ofstream fout("flip.out");


long long s_max{-1800000000000};

long long best_line_configuration_sum(int matrix[17][17])
{
    long long s_current{0};

    for(int i = 1; i <= N; i++)
    {
        long long s_line{0};

        for(int j = 1; j <= M; j++) s_line += matrix[i][j];


        if(s_line < 0)
        {
            s_line *= -1;

            for(int j = 1; j <= M; j++) matrix[i][j] *= -1;
        }

        s_current += s_line;
    }

    return s_current;
}

void columns_backtracking(int column = 1, int m[17][17] = matrix)
{
    if(column > M)
    {
        s_max = max(s_max, best_line_configuration_sum(matrix));
    }
    else
    {
        columns_backtracking(column + 1);

        for(int i = 1; i <= N; i++) m[i][column] *= -1;

        columns_backtracking(column + 1);
    }
}

int main(void)
{
    fin >> N >> M;

    for(int i = 1; i <= N; i++)
    {
        for(int j = 1; j <= M; j++)
        {
            fin >> matrix[i][j];
        }
    }

    columns_backtracking();

    fout << s_max;
}