Cod sursa(job #2535812)

Utilizator matthriscuMatt . matthriscu Data 1 februarie 2020 11:37:46
Problema Jocul Flip Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>
#include <math.h>
using namespace std;

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

int n, m, a[17][17], v[33], p, s, i, j, k, maxim;

int sum() {
    int s = 0;
    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= n; ++j)
            s += a[i][j];
    return s;
}

int abs(int n) {
    if(n < 0)
        return -n;
    return n;
}

int dtb(int x) {
    int i = n+m;
    while(x) {
        v[i] = x % 2;
        x /= 2;
        --i;
    }
}

int main() {
    fin >> n >> m;
    p = pow(2, n+m);
    for(i = 1; i <= n; ++i)
        for(j = 1; j <= m; ++j)
            fin >> a[i][j];

    for(i = 0; i < p; ++i) {
        s = 0;
        dtb(i);
        for(j = 0; j <= n; ++j)
            if(v[j])
                for(k = 1; k <= n; ++k)
                    if(v[k+n] == 0)
                        s += -a[k][j];
                    else
                        s += a[k][j];
            else
                for(k = 1; k <= n; ++k)
                    s += a[k][j];
        for(j; j <= n+m; ++j)
            if(v[j])
                for(k = 1; k <= m; ++k)
                    s += -a[j][k];
            else
                for(k = 1; k <= m; ++k)
                    s += a[j][k];
        if(abs(s) > maxim)
            maxim = abs(s);
    }
    fout << maxim;
}