Cod sursa(job #1400567)

Utilizator crysstyanIacob Paul Cristian crysstyan Data 25 martie 2015 12:34:58
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
#include <algorithm>
#define NMAX 17

using namespace std;

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

int mat[NMAX][NMAX], i, j, n, m, v[NMAX], cont1, answer=-2000000000, cont2;

void afis()
{
    for (int i=0; i<=n; ++i)
    {
        for (int j=0; j<=m; ++j)
        g<<mat[i][j]<<" ";
        g<<'\n';
    }
    g<<'\n';
}

int suma()
{
    int rez=0;
    for (int i=1; i<=n; ++i)
    for (int j=1; j<=m; ++j)
    rez+=mat[i][j]*mat[0][j]*mat[i][0];
    return rez;
}

int main()
{
    f>>n>>m;
    cont1=(1<<n);
    cont2=(1<<m);

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

    for (i=1; i<=n; ++i) mat[i][0]=1;
    for (j=1; j<=m; ++j) mat[0][j]=1;

    while (cont1)
    {
        for (i=1; i<=n; ++i)
            if (mat[i][0]==1)
            {
                mat[i][0]=-1;
                break;
            }
            else
            mat[i][0]=1;
        cont2=(1<<m);
        while (cont2)
        {
        for (j=1; j<=m; ++j)
        if (mat[0][j]==1)
        {
            mat[0][j]=-1;
            break;
        }
        else
        mat[0][j]=1;

        answer=max(answer,suma());
        cont2--;
        }

        cont1--;
    }
    g<<answer<<'\n';
    return 0;
}