Cod sursa(job #2327133)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 24 ianuarie 2019 13:53:21
Problema Jocul Flip Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <climits>

using namespace std;

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

int mat[20][20], n,m, sum, maxx = INT_MIN;

void bkt(int pas)
{
    if(pas == n + m + 1)
    {
        sum = 0;
        for(int i = 1; i <= n; ++i)
            for(int j = 1; j <= m; ++j)
                sum += mat[i][j];
        maxx = max(maxx, sum);
        return;
    }

    if(pas <= n)
    {
        for(int j = 1; j <= m; ++j)
            mat[pas][j] *= (-1);
        bkt(pas + 1);
        for(int j = 1; j <= m; ++j)
            mat[pas][j] *= (-1);
        bkt(pas + 1);
    }
    else
    {
        for(int i = 1; i <= n; ++i)
            mat[i][pas - n] *= (-1);
        bkt(pas + 1);
        for(int i = 1; i <= n; ++i)
            mat[i][pas - n] *= (-1);
        bkt(pas + 1);
    }
}

int main()
{
    fin >> n >> m;

    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j)
            fin >> mat[i][j];

    bkt(1);

    fout << maxx << '\n';
    return 0;
}