Cod sursa(job #2342491)

Utilizator FlorinVladutCreta Florin FlorinVladut Data 12 februarie 2019 21:07:52
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <fstream>

using namespace std;

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

int n, m, Max_i;
long long Max_sum, sum, sp;
int A[17][17];
int B[17][17];
bool lin[17];

void read()
{
    fin >> n >> m;
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= m; j++)
        {
            fin >> A[i][j];
        }
    }
}
void next()
{
    if(lin[1] == false)
    {
        lin[1] = true;
    }
    else
    {
        int k = 1;
        while(lin[k] == true)
        {
            lin[k] = false;
            k++;
        }
        lin[k] = true;
    }
}
int twoPow(int p)
{
    int rez = 1;
    while(p)
    {
        rez *= 2;
        p--;
    }

    return rez;
}
void createB()
{
    int sign;

    for(int i = 1; i <= n; i++)
    {
        if(lin[i] == false) sign = 1;
        else sign = -1;

        for(int j = 1; j <= m; j++)
        {
            B[i][j] = A[i][j] * sign;
        }
    }
}

int main()
{
    read();
    Max_i = twoPow(n);

    for(int i = 0; i < Max_i; i++)
    {
        createB();
        sum = 0;

        for(int j = 1; j <= m; j++)
        {
            sp = 0;
            for(int i = 1; i <= n; i++)
            {
                sp += B[i][j];
            }
            sum += abs(sp);
        }

        if(sum > Max_sum) Max_sum = sum;
        next();
    }


    fout << Max_sum;


    return 0;
}