Cod sursa(job #2832577)

Utilizator daniel23Malanca Daniel daniel23 Data 13 ianuarie 2022 22:19:15
Problema Jocul Flip Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 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 = 0;

    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++)
            sum += arr[i][j];
    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();
        }

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

        for (int j=0; j<n; j++)
            arr[j][i] *= -1;
    }
}

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

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

    out << max;
}