Cod sursa(job #2033268)

Utilizator papinub2Papa Valentin papinub2 Data 6 octombrie 2017 15:47:16
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>

using namespace std;

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

int n, m, maxim, suma;
int v[20][20], actual[20][20], forma[20], coloana[20];

void backtracking (int k)
{
    if (k == n + 1)
    {
        for (int i = 1; i <= n; i++)
        {
            for (int j = 1; j <= m; j++)
            {
                if (forma[i] == 1)
                    actual[i][j] = v[i][j];

                else

                    actual[i][j] = v[i][j] * (-1);

                coloana[j] = coloana[j] + actual[i][j];
            }
        }

        for (int i = 1; i <= m; i++)
        {
            if (coloana[i] < 0)
                coloana[i] = coloana[i] * (-1);

            suma = suma + coloana[i];

            coloana[i] = 0;
        }

        if (suma > maxim)
            maxim = suma;

        suma = 0;

        return;
    }

    forma[k] = 1;
    backtracking(k + 1);

    forma[k] = -1;
    backtracking(k + 1);
}

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

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

    backtracking(1);

    out << maxim;

    return 0;
}