Cod sursa(job #1439324)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 22 mai 2015 09:46:34
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>

using namespace std;

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

int a[20][20];
int n, m, i, j, I, J, k, l, s, sDoarC, sCplusL;
int maxim = -2147483647;

int main()
{
    f >> n >> m;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= m; j++)
        {
            f >> a[i][j];
            s += a[i][j];
            if (a[i][j] < 0) a[n+1][j] += a[i][j], a[i][m+1] += a[i][j];
            else             a[n+2][j] += a[i][j], a[i][m+2] += a[i][j];
        }

    k = (1 << n), l = (1 << m);
    for (i = 1; i < k; i++)
    {
        sDoarC = s;
        for (j = 0; j < n; j++)
            if ((i & (1 << j)) && ((-a[n+1][j+1]) > a[n+2][j+1]))
                    sDoarC -= 2*(a[n+2][j+1] + a[n+1][j+1]);
        for (I = 1; I < l; I++)
        {
            sCplusL = sDoarC;
            for (J = 0; J < m; J++)
                if ((I & (1 << J)) && (-a[J+1][m+1] > a[J+1][m+2]))
                    sCplusL -= 2*(a[J+1][m+1] + a[J+1][m+2]);
        }
        if (sCplusL > maxim)
            maxim = sCplusL;
    }
    g << maxim;
}