Cod sursa(job #2636743)

Utilizator EckchartZgarcea Robert-Andrei Eckchart Data 19 iulie 2020 15:33:47
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <algorithm>
#include <fstream>
using namespace std;
using LL = long long;
using ULL = unsigned long long;
using LD = long double;
using pii = pair<int, int>;
using pll = pair<LL, LL>;
const int MAX_DIM = 16;
int N, M;
int max_sum;
int A[MAX_DIM][MAX_DIM], flipped[MAX_DIM];


int get_sum()
{
    int res = 0;
    for (int col = 0; col < M; ++col)
    {
        int sum_cur_col = 0;
        for (int line = 0; line < N; ++line)
        {
            sum_cur_col += A[line][col] * flipped[line];
        }
        res += abs(sum_cur_col);
    }

    return res;
}


void solve(const int &cur_line)
{
    if (cur_line == N)
    {
        max_sum = max(max_sum, get_sum());
    }
    else
    {
        flipped[cur_line] = 1;
        solve(cur_line + 1);

        flipped[cur_line] = -1;
        solve(cur_line + 1);
    }
}


int main()
{
    ifstream cin("flip.in");
    ofstream cout("flip.out");

    cin >> N >> M;

    for (int i = 0; i < N; ++i)
    {
        for (int j = 0; j < M; ++j)
        {
            cin >> A[i][j];
        }
    }

    solve(0);

    cout << max_sum;
}