Cod sursa(job #3265595)

Utilizator RoBest69Muntean Claudiu RoBest69 Data 1 ianuarie 2025 13:58:24
Problema Jocul Flip Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <climits>

using namespace std;

ifstream fin("flip.in");
ofstream fout("flip.out");

int n, m, a[16][16], smax = INT_MIN;

void suma(vector<bool>& r, vector<bool>& c) {
    int s = 0;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            int v = a[i][j];
            int flip = (r[i] ? 1 : 0) + (c[j] ? 1 : 0);
            if (flip % 2 == 1) v = -v;
            s += v;
        }
    }
    smax = max(smax, s);
}

void rez(int p, vector<bool>& r, vector<bool>& c) {
    if (p == n + m) {
        suma(r, c);
        return;
    }

    rez(p + 1, r, c);

    if (p < n) {
        r[p] = !r[p];
        rez(p + 1, r, c);
        r[p] = !r[p];
    }
    else {
        c[p - n] = !c[p - n];
        rez(p + 1, r, c);
        c[p - n] = !c[p - n];
    }
}

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

    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            fin >> a[i][j];

    vector<bool> r(n, false), c(n, false);
    rez(0, r, c);

    fout << smax;
}