Cod sursa(job #2014970)

Utilizator shantih1Alex S Hill shantih1 Data 24 august 2017 18:46:09
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>

using namespace std;

long long n, m, i, j, v[18][18], b[18][18], x[35], k;
long long c, rez2, rez;

long long suma ()
{
    for (int c = 1; c <= k; c++)
    {
        if (x[c] <= n)
            for (int i = 1; i <= n; i++)
                b[i][x[c]] *= -1;
        else
            for (int j = 1; j <= m; j++)
                b[x[c]-n][j] *= -1;
    }

    long long sum = 0;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= m; j++)
        {   sum += b[i][j];     b[i][j] = v[i][j];   }
    
    return sum;
}

void back (int p)
{
    long long c;
    for (long long i = x[p-1] + 1; i <= n+m; i++)
    {
        x[p] = i;
        if (p == k)
        {
            c = suma();
            if (c > rez)    rez = c;
        }
        else back(p + 1);
    }
}

int main () {
    
    ifstream fin("flip.in");
    ofstream fout("flip.out");
    
    fin >> n >> m;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= m; j++)
        {
            fin >> v[i][j];
            rez2 += v[i][j];
        }
    
    for (k = 1; k <= n+m; k++)
    {
        back(1);
        if (rez > rez2)     rez2 = rez;
    }
    
    fout << rez << "\n";
}