Cod sursa(job #2832578)

Utilizator daniel23Malanca Daniel daniel23 Data 13 ianuarie 2022 22:23:51
Problema Jocul Flip Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
int n, m;
int arr[16][16];
int max = 0;

std::ifstream in("flip.in");
std::ofstream out("flip.out");

void solve(int sum) {
    if (sum > max) max = sum;

    for (int i=0; i<n; i++) {
        int s = 0;
        for (int j=0; j<m; j++)
            s += arr[i][j];
        
        if (s < 0 && sum - 2*s > max) {
            for (int j=0; j<m; j++)
                arr[i][j] *= -1;   
            solve(sum - 2*s);
            for (int j=0; j<m; j++)
                arr[i][j] *= -1;
        }

    }

    for (int i=0; i<m; i++) {
        int s = 0;
        for (int j=0; j<n; j++)
            s += arr[j][i];
        
        if (s < 0 && sum - 2*s > max) {
            for (int j=0; j<n; j++)
                arr[j][i] *= -1;
            solve(sum - 2*s);
            for (int j=0; j<n; j++)
                arr[j][i] *= -1;
        }

    }
}

int main() {
    in >> n >> m;

    int sum = 0;

    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++)
            in >> arr[i][j],
            sum += arr[i][j];

    solve(sum);

    out << max;
}