Cod sursa(job #1726981)

Utilizator vasi461Vasiliu Dragos vasi461 Data 9 iulie 2016 17:06:19
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <fstream>

using namespace std;

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

int n, m;
int a[20][20], B[40], c[20][20];
long long s;

void check(int len)
{
    for(int i = 1; i <= n; ++i)
    {
        for(int j = 1; j <= m; ++j)
        {
            c[i][j] = a[i][j];
        }
    }
    for(int i = 1; i <= len; ++i)
    {
        if (B[i] == 1)
        {
            if(i <= n)
            {
                for(int j = 1; j <= m; ++j)
                {
                    c[i][j] = -c[i][j];
                }
            }
            else
            {
                int col = i - n;
                for(int j = 1; j <= n; ++j)
                {
                    c[j][col] = -c[j][col];
                }
            }
        }
    }
    int sum = 0;
    for(int i = 1; i <= n; ++i)
    {
        for(int j = 1; j <= m; ++j)
        {
            sum += c[i][j];
        }
    }
    if(sum > s)
    {
        s = sum;
    }
}

void submultimi(int len, int p)
{
    if (p == len + 1)
    {
        check(len);
        return;
    }
    for (int i = 0; i <= 1; ++i)
    {
        B[p] = i;
        submultimi(len, p + 1);
    }
}

int main()
{
    cin >> n >> m;
    s = 0;
    for(int i = 1; i <= n; ++i)
    {
        for(int j = 1; j <= m; ++j)
        {
            cin >> a[i][j];
            s += a[i][j];
        }
    }
    submultimi(n + m, 1);
    cout << s;
    return 0;
}