Cod sursa(job #1274236)

Utilizator alexb97Alexandru Buhai alexb97 Data 23 noiembrie 2014 17:09:05
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream is("flip.in");
ofstream os("flip.out");

int n, m;
int a[21][21];
int b[21][21];
int x[21];
int smax;

void Back(int k);
void Solve();

int main()
{
    is >> n >> m;
    for(int i = 1; i <= n; ++i)
    {
        for(int j = 1; j <= m; ++j)
        {
            is >> a[i][j];
            b[i][j] = a[i][j];
        }
    }
    Back(1);
    os << smax;
    is.close();
    os.close();
    return 0;
}

void Back(int k)
{
    if(k == m+1)
    {
        Solve();
        return;
    }
    for(int i = 0; i <= 1; ++i)
    {
        x[k] = i;
        Back(k+1);
    }
}

void Solve()
{
    int suma = 0;
    for(int i = 1; i <= m; ++i)
    {    if(x[i] == 1)
            for(int j = 1; j <= n; ++j)
                a[j][i] *= -1;
    }
    int s;
    for(int i = 1; i <= n; ++i)
    {
        s = 0;
        for(int j = 1; j <= m; ++j)
            s += a[i][j];
        suma += abs(s);
    }
    for(int i = 1; i <= n; ++i)
            for(int j = 1; j <= m; ++j)
                    a[i][j] = b[i][j];
    smax = max(suma, smax);
}