Cod sursa(job #893879)

Utilizator alexarnautuArnautu Alexandru alexarnautu Data 26 februarie 2013 18:35:40
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int n, m, a[17][17], sol;

void mult_col(int col)
{
    int i;
    for(i=1; i<=n; i++)
        a[i][col]*=-1;
}

void mult_row(int row)
{
    int i;
    for(i=1; i<=m; i++)
        a[row][i]*=-1;
}

int sum()
{
    int s=0, i, j;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            s+=a[i][j];
    return s;
}

void back(int k)
{
    int i,j;
    if(k-1==m)
    {
        sol = max(sol, sum());
    } else {
        for(i=1;i<=n;i++)
        {
            mult_row(i);
            back(k+1);
            for(j=1;j<=m;j++)
            {
                mult_col(j);
                back(k+1);
            }
        }
    }
}


int main()
{
    freopen("flip.in", "r", stdin);
    freopen("flip.out", "w", stdout);

    int i,j;

    scanf("%d%d", &n, &m);

    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            scanf("%d", &a[i][j]);

    back(1);

    printf("%d", sol);


    return 0;
}