Cod sursa(job #2615127)

Utilizator Yato2Denis Scutariu Yato2 Data 13 mai 2020 18:16:02
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
using namespace std;

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

int calcSuma(int n, int m, int mat[][17], int v[]) {
    int sumaTotala = 0, sumaColoana = 0;
    for(int j = 1; j <= m; ++j) {
        
        sumaColoana = 0;
        for(int i = 1; i <= n; ++i) {
            if(v[i] == 0)
                sumaColoana += mat[i][j];
            else 
                sumaColoana -= mat[i][j];
        }
        if(sumaColoana < 0)
            sumaColoana = -sumaColoana;
        sumaTotala += sumaColoana;
    } 
    return sumaTotala;
}

void print(int n, int m, int mat[][17]) {

    for(int i = 1; i <= n; ++i, out << '\n')
        for(int j = 1; j <= m; ++j)
            out << mat[i][j] << ' ';
}

void back(int k, int mat[][17], int v[], int n, int m, int &smax) {
    for(int i = 0; i <= 1; ++i) {
        v[k] = i;
        if(k == n) {
            int s = calcSuma(n, m, mat, v);
            if(s > smax)
                smax = s;
        }
        else 
            back(k + 1, mat, v, n, m, smax);
    }
}

int main() {

    int n, m, a[17][17], v[17], smax = 0;

    in >> n >> m;
    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j) 
            in >> a[i][j];
    back(1, a, v, n, m, smax);

    out << smax;

    in.close();
    out.close();
    return 0;
}